…Biny简介Biny是一款高性能的超轻量级PHP框架,融云已服务了超过15万的开发者

摘要近日,苹果开源了一款基于事件驱动的高性能跨平台网络应用程序开发框架
SwfitNIO,它有点类似 Netty,但开发语言使用的是
Swift。1、SwiftNIO是什么SwfitNIO
实际上是一个底层工具,用于开发高性能的网络应用程序,作为“每连接一个线程”的替代方案。为了提升性能,SwfitNIO
使用了非阻塞 IO,这从它的名字就可以看出来。非阻塞 IO 与阻塞式 IO
非常不一样,因为不管是往网络上发送数据还是从网络上接收数据,应用程序都无需等待,系统内核会在有可操作的
IO 时通知 SwfitNIO。SwfitNIO 并不会提供类似 Web
框架那样的解决方案,而是致力于为上层框架提供底层的构建块。在开发 Web
应用程序时,大部分开发者不会直接使用 SwfitNIO,他们会从 Swift
生态系统众多的 Web 框架中选择一个。不过,这些框架中的大部分都使用了
SwfitNIO。2、受支持的平台SwfitNIO 的目标是支持所有可以运行 Swift
的平台。目前,SwfitNIO 可以在 macOS 和 Linux 上运行,包括:Ubuntu
14.04+macOS 10.12+3、基本架构SwfitNIO 包含了几种基本构建块,所有的
SwfitNIO
应用程序都是由这几种组件组成的。EventLoopGroupEventLoopChannelChannelHandlerBootstrapByteBuffer▶
EventLoopPromise 和 EventLoopFutureEventLoop 是 SwfitNIO 最基本的 IO
原语,它等待事件的发生,在发生事件时触发某种回调操作。在大部分 SwfitNIO
应用程序中,EventLoop 对象的数量并不多,通常每个 CPU 核数对应一到两个
EventLoop 对象。一般来说,EventLoop
会在应用程序的整个生命周期中存在,进行无限的事件分发。EventLoop
可以组合成 EventLoopGroup,EventLoopGroup 提供了一种机制用于在各个
EventLoop 间分发工作负载。例如,服务器在监听外部连接时,用于监听连接的
socket 会被注册到一个 EventLoop 上。但我们不希望这个 EventLoop
承担所有的连接负载,那么就可以通过 EventLoopGroup 在多个 EventLoop
间分摊连接负载。目前,SwiftNIO 提供了一个 EventLoopGroup
实现(MultiThreadedEventLoopGroup)和两个 EventLoop
实现(SelectableEventLoop 和
EmbeddedEventLoop)。MultiThreadedEventLoopGroup 会创建多个线程(使用
POSIX 的 pthreads 库),并为每个线程分配一个 SelectableEventLoop
对象。SelectableEventLoop 使用选择器(基于 kqueue 或
epoll)来管理来自文件和网络 IO 事件。EmbeddedEventLoop 是一个空的
EventLoop,什么事也不做,主要用于测试。▶
Channels、ChannelHandler、ChannelPipeline 和 ChannelHandlerContext尽管
EventLoop
非常重要,但大部分开发者并不会与它有太多的交互,最多就是用它创建
EventLoopPromise 和调度作业。开发者经常用到的是 Channel 和
ChannelHandler。每个文件描述符对应一个 Channel,Channel
负责管理文件描述符的生命周期,并处理发生在文件描述符上的事件:每当
EventLoop 检测到一个与相应的文件描述符相关的事件,就会通知
Channel。ChannelPipeline 由一系列 ChannelHandler 组成,ChannelHandler
负责按顺序处理 Channel 中的事件。ChannelPipeline
就像数据处理管道一样,所以才有了这个名字。ChannelHandler 要么是
Inbound,要么是 Outbound,要么两者兼有。Inbound 的 ChannelHandler
负责处理“inbound”事件,例如从 socket 读取数据、关闭 socket
或者其他由远程发起的事件。Outbound 的 ChannelHandler
负责处理“outbound”事件,例如写数据、发起连接以及关闭本地
socket。ChannelHandler
按照一定顺序处理事件,例如,读取事件从管道的前面传到后面,而写入事件则从管道的后面传到前面。每个
ChannelHandler 都会在处理完一个事件后生成一个新的事件给下一个
ChannelHandler。ChannelHandler
是高度可重用的组件,所以尽可能设计得轻量级,每个 ChannelHandler
只处理一种数据转换,这样就可以灵活组合各种
ChannelHandler,提升代码的可重用性和封装性。我们可以通过
ChannelHandlerContext 来跟踪 ChannelHandler 在 ChannelPipeline
中的位置。ChannelHandlerContext 包含了当前 ChannelHandler
到上一个和下一个 ChannelHandler 的引用,因此,在任何时候,只要
ChannelHandler 还在管道当中,就能触发新事件。SwiftNIO 内置了多种
ChannelHandler,包括 HTTP 解析器。另外,SwiftNIO 还提供了一些 Channel
实现,比如 ServerSocketChannel(用于接收连接)、SocketChannel(用于 TCP
连接)、DatagramChannel(用于 UDP socket)和
EmbeddedChannel(用于测试)。▶ BootstrapSwiftNIO 提供了一些 Bootstrap
对象,用于简化 Channel 的创建。有些 Bootstrap
对象还提供了其他的一些功能,比如支持 Happy Eyeballs。目前 SwiftNIO
提供了三种 Bootstrap:ServerBootstrap(用于监听
Channel),ClientBootstrap(用于 TCP Channel)和 DatagramBootstrap(用于
UDP Channel)。▶ ByteBufferSwiftNIO 提供了 ByteBuffer,一种快速的
Copy-On-Write 字节缓冲器,是大部分 SwiftNIO
应用程序的关键构建块。ByteBuffer
提供了很多有用的特性以及一些“钩子”,通过这些钩子,我们可以在“unsafe”的模式下使用
ByteBuffer。这种方式可以获得更好的性能,代价是应用程序有可能出现内存问题。在一般情况下,还是建议在安全模式下使用
ByteBuffer。▶ EventLoopPromise 和
EventLoopFuture并发代码和同步代码之间最主要的区别在于并非所有的动作都能够立即完成。例如,在向一个
Channel 写入数据时,EventLoop
有可能不会立即将数据冲刷到网络上。为此,SwiftNIO 提供了
EventLoopPromise和
EventLoopFuture,用于管理异步操作。EventLoopFuture实际上是一个容器,用于存放函数在未来某个时刻的返回值。每个
EventLoopFuture对象都有一个对应的
EventLoopPromise,用于存放实际的结果。只要 EventLoopPromise
执行成功,EventLoopFuture 也就完成了。通过轮询的方式检查 EventLoopFuture
是否完成是一种非常低效的方式,所以 EventLoopFuture
被设计成可以接收回调函数。也就是说,在有结果的时候回调函数会被执行。EventLoopFuture负责处理调度工作,确保回调函数是在最初创建
EventLoopPromise 的那个 EventLoop
上执行,所以就没有必要再针对回调函数做任何同步操作。4、SwiftNIO
的设计哲学SwiftNIO
的目标是要成为强大的网络应用程序开发框架,但并不想为所有的层次抽象提供完美的解决方案。SwiftNIO
主要专注在基本的 IO
原语和底层的协议实现上,将其他层次的抽象留给广大的社区去构建。SwiftNIO
将成为服务器端应用程序的构建块,但不一定就是应用程序直接拿来使用的框架。对性能有很高要求的应用程序可能会直接使用
SwiftNIO,减少上层抽象所带来的开销。SwiftNIO
可以帮助这些应用程序在提升性能的同时降低维护成本。SwiftNIO
还为某些场景提供了有用的抽象,高性能的网络服务器可以直接使用这些抽象。SwiftNIO
的核心仓库提供了一些非常重要的协议实现,比如
HTTP。不过,我们认为,大部分协议的实现应该要与底层的网络栈分开,因为它们的发布节奏是很不一样的。为此,我们鼓励社区自己去实现和维护他们的协议实现。实际上,SwiftNIO
提供的一些协议实现最初就是由社区开发的,比如 TLS 和
HTTP/2。5、相关资源源码托管:
文档:
SwiftNIO:聊天客户端:
客户端:
服务器端:
服务器:

摘要Biny 是一款高性能的超轻量级PHP框架。遵循 MVC 模式,用于快速开发现代
Web 应用程序。Biny
代码简洁优雅,对应用层,数据层,模板渲染层的封装简单易懂,能够快速上手使用。高性能,框架响应时间在1ms以内,单机qp
…Biny简介Biny是一款高性能的超轻量级PHP框架,遵循 MVC
模式,用于快速开发现代 Web
应用程序。Biny代码简洁优雅,对应用层,数据层,模板渲染层的封装简单易懂,能够快速上手使用。高性能,框架响应时间在1ms以内,单机qps轻松上3000。功能介绍支持跨库连表,条件复合筛选,查询PK缓存等;同步异步请求分离,类的自动化加载管理;支持Form表单验证,支持事件触发机制;支持浏览器端调试,快速定位程序问题和性能瓶颈;具有sql防注入,html自动防xss等特性。资源地址开发者指南:
地址::
框架跟传统PHP框架区别在哪儿,有什么优势?A:
Biny是个自由度很高的框架,不像其他框架需要配置各种路由,自动加载类,复杂的命名空间。这些在Biny中都是不需要的,按照一个简单的规则就能快速使用这些功能。从开发者的角度出发,在功能上使用非常简单。而且具有相当强的安全性。从框架层面完全屏蔽了
SQL注入和 XSS注入两大安全难题,非常适合新人使用。Q:
Biny框架的性能如何?A: 测试机:Intel Xeon Processor E5506 (4M Cache,
2.13 GHz, 4.80 GT/s Intel? QPI) 一个普通查询数据页面(50%命中缓存)QPS
能轻松达到3000以上,同比Yii,性能是Yii的2倍以上。Q:
我想使用Biny,请问有相关说明文档吗?A: 文档都在:
Biny框架适配PHP7吗?A: 可以完美运行,性能提高2倍以上。Q:
Biny现在是最终版了吗,还会继续更新吗?A:
目前版本在多个项目中已经正常使用,相对成熟。后续会针对性能和功能上都会持续更新,届时只需更新替换
lib库 即可使用最新框架。

摘要据融云官方消息称:11月1日,融云SDK触达用户数突破20亿,业务增长速度及用户覆盖量再创即时通讯云领域新高。自去年11月10日公布SDK触达用户数破10亿以来,融云仅用了一年时间,便取得了触达用户数翻倍的成绩,
…前言据融云官方消息称,融云即时通讯云SDK触达用户数已破20亿:11月1日,融云SDK触达用户数突破20亿,业务增长速度及用户覆盖量再创即时通讯云领域新高。自去年11月10日公布SDK触达用户数破10亿以来,融云仅用了一年时间,便取得了触达用户数翻倍的成绩,迅猛的发展速度甚至超过了中国移动网民的增速。按照目前中国8亿移动网民的数量计算,平均每个人的手机里至少安装了2个依靠内置融云SDK实现即时通讯的App。经过一年的发展,融云靠实力夯实了IM行业的领先地位,王者风范得以双倍展现。资讯详情一直以来,融云专注为互联网、移动互联网开发者提供即时通讯基础能力和云端服务。通过融云平台,开发者不必搭建服务端硬件环境,就可以将即时通讯、实时网络能力快速集成至应用中。针对开发者所需的不同场景,融云提供了一系列产品、技术解决方案,支持单聊、群聊、讨论组、聊天室
、客服等即时通讯场景。截止目前,融云已服务了超过15万的开发者,这一数据较之去年也取得大幅增长,融云即时通讯云平台显然已成为广大开发者的口碑之选。  为何越来越多的开发者及用户会选择融云,这得益于其强大的技术实力及独特的产品优势:  1、快速开发  即时通讯云通过互联网来提供动态易扩展且经常是虚拟化的资源,主要优势是集成简单、安全性高、并发性好。开发者只需要3
分钟的时间,即可通过融云提供的极简 API 和组件,将即时通讯功能集成到 App
中,直接获得主流 IM
的通讯能力和用户体验。  2、零成本投入  无需投入服务器及硬件成本,无需担心硬件的维护问题,无需顾虑安全和性能保障;节约开发和维护的人力成本;即时通讯能力和丰富的交互组件完全免费。  3、无缝融合  完美支持
App
自有的用户策略,不影响现有用户体系和好友关系,同时提供无用户系统的沟通方案;组件适用于各种业务场景,模块
UI 可定制,实现与 App
的直接集成。  4、双向实时通讯  保证在各种网络制式(2G、3G、4G)及弱网络(慢网速)中消息的可靠性和正确性。在降低网络流量和终端的电量消耗上具有多年的经验积累。  5、弹性伸缩  服务能力弹性变化,按需使用,从容应对业务压力和高峰;根据闲时与忙时的吞吐量预估分析,提前自动扩展设备投入;针对特殊事件和时期,提供人工干预的紧急能力提升服务。  6、系统稳定  所有的服务节点和业务节点均提供冗余支持,从架构上排除单点故障的可能;完善的监控、拨测和预警系统,保证系统的健康维护;健全的协议机制,保证消息必达。  7、用户考验能力  群组:可支持单群
3000
人数,同一用户加入群数量无上限的大型社群。  聊天室:支持无上限用户在同一聊天室互动,公有云历史数据最高
14.7 万用户在同一聊天室。  触达用户数超过 20亿,日活用户数超过 6000
万人,日均消息量 150 亿条,日峰值消息
2218亿以上。典型客户案例有:猎豹live
.me、PPTV聚力视频、百姓网、来疯直播、蜜芽、汽车之家、携程爱玩等。  8、完备安全保障  在保证协议安全和具备抗
DDos
攻击的切换能力外,所有业务服务和数据不直接对外暴露,连接网关具备鉴权能力;与业务系统对接时,用户登陆
IM 系统需要采用授权登陆方式,IM
系统不需要同步全部用户;消息具备敏感词过滤、反垃圾信息能力。  在国内,融云已打下了连续四年市场占有率第一的赫赫战绩。随着中国企业的出海大潮,未来融云SDK触达用户数的海外用户比例将逐步上升,会有越来越多的海外开发者选择融云的服务,融云也会把即时通讯的强劲势能带到世界各地,服务好全球用户。融云即时通讯云官网地址:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图