在探讨“phpcon-2017有赞代维讲解文档”中涉及的知识点之前,首先需要明确该文档所关注的技术范畴和业务背景。文档讨论了有赞公司基于Swoole开发的一个名为zanphp的微服务框架,以及有赞的架构演进和跨语言服务化之路。
有赞是一家专注于提供电子商务解决方案的公司,而微服务架构和跨语言服务化是其技术演进中的重要组成部分。微服务架构允许多个小型服务独立开发、部署和扩展,有助于提升系统的可维护性和可伸缩性。跨语言服务化则是指让不同编程语言开发的服务能够协同工作,共同完成业务逻辑。
### 架构演进史
文档从第一阶段到第三阶段详细介绍了有赞架构的演进过程:
#### 第一阶段
在这一阶段,主要关注的是H5APP的外部接入,使用了Nginx作为前端服务器和YAF作为PHP的框架。此阶段的特点是结构简单、开发效率高、维护成本低。主要业务模块包括会员、店铺、商品、分销、营销、交易和支付等,数据存储于MySQL和Redis中。
#### 第二阶段
第二阶段开始涉及到H5APP与ISV(独立软件供应商)的外部接入。这一阶段引入了IronPHP框架,并开始使用多个中间件如Cobar、Redis、NSQ和ElasticSearch等,以及MySQL的集群和Canal等技术。在这一阶段,系统开始重视团队协作、隔离性、可用性和扩展性。
#### 第三阶段
第三阶段则进一步深化了接入层和ISV的整合,Carmen(OpenPlatform)和ZanPHP(HttpServer)成为主要的架构组件。通过使用SOA架构(面向服务的架构)和微服务框架,进一步实现了业务逻辑的解耦。同时,引入了消息队列、数据存储和日志服务等更多基础设施,完成了大数据平台、风控配置管理、监控平台和研发平台的建设。
### 跨语言服务化
跨语言服务化是提高系统灵活性和扩展性的重要手段。SOA架构作为组件模型,通过定义良好的接口和契约将应用程序的不同功能单元(服务)连接起来。文档中提到,采用SOA架构可以实现服务之间的松耦合,提高协作效率,增强系统的可用性和伸缩性,并且能够充分发挥多语言优势。
在具体实施上,文档描述了请求入口的过滤、事件监听、会话管理、PHP协程、监控资源清理等组件和流程。ZanPHP框架中引入了协程调度、服务发现、分布式日志、调用链监控、配置中心和容灾等高级特性。
### 架构详情
在架构的细节部分,文档讨论了服务发现的实现,包括了协议、命名空间、应用名、主机和端口等元素。服务注册中心作为核心组件,负责服务的注册、订阅、通知、心跳、注册和负载均衡等任务。这一部分还详细介绍了RPC(远程过程调用)的使用,包括Nova、Thrift等协议,并强调了TCP连接复用和基于Thrift的Nova协议比HTTP有更快的传输性能。
文档还提到了IDL(接口描述语言)文件的生成,其可以通过工具快速生成,以提供准确的文档和本地调用一样的使用体验。跨语言支持包括语言特性和数据类型的处理,使得使用不同编程语言编写的模块能够像调用本地服务一样进行。
通过上述架构演进和实现细节的介绍,有赞的zanphp微服务框架不仅能够适应复杂多变的业务需求,还能够支持不同语言编写的程序高效协作,从而为有赞业务的稳定运行和快速发展提供了坚实的技术基础。