微服务架构:构建PHP微服务生态

发布时间:2024-09-15 点击:93
建站服务器
诞生于 2014 年的“微服务架构”,其思想经由 martin fowler 阐述后,在近几年持续受到重视,理论与相关实践都不断发展,目前谈架构必定会言及微服务架构。
伴随着微服务架构的快速发展,各种开发语言各种类型的微服务开发框架陆续出现,在近日举办的 phpcon 大会上,来自开源微服务框架 tars 核心开发组的梁晨,为开发者分享了 tars-php 在 tars 构建微服务生态中扮演的角色。梁晨同时也是 tars-php 项目的主要负责人,以下是本次演讲全程的整理。
大家好,接下来 45 分钟的时间,我想跟大家聊聊 tars 作为微服务平台本身有什么优势,同时也想让大家看到,tars-php 核心开发组在这一年中,不断演进 tars-php,将其融入 php 生态的努力,看看这对整个 tars 微服务生态有些什么意义。
从近年来的业界架构演进来看,微服务已经逐渐成为趋势。从这张图可以看到,在不同的行业,发布服务的时间间隔各不相同,互联网行业每周发布的占比最高,但是其它行业也有逐渐赶上的趋势。
我们可以看到具体的发布数据,63%%u7684企业平均每月发布一次。怎么将系统转到微服务架构上呢?现在有很多选择,接近 10% %u7684人选择 dubbo 这样的原生框架,接近 50% %u7684人选择云原生架构,同时也有 30% %u5de6右的人基于 weblogic websphere 等架构。而在这其中,51% %u8003虑转型,15% %u5df2经实施。
从这些数据中我们可以看得出来微服务架构当前逐渐成为主流。
伴随着微服务架构的这种快速发展节奏,各种开发语言各种类型的微服务开发框架相继出现,我们分析了一下当前各家使用微服务框架的情况,可以看到主要分为四种模式:
无服务治理类:grpc、brpc 为代表
单语言带服务治理类:dubbo、spring cloud 为代表,主要适用于 java 语言
多语言带服务治理类:tars
service mesh:sidecar 模式,仍在发展成熟期
这其中,tars 在通信框架的基础上支持服务治理能力,同时支持多种编程语言,算是比较另类的选择。讲到这里,我们可以来看看它具体支持怎样的治理能力,在此之前,先了解一下微服务架构是怎样的。
从微服务整体架构上看,它主要分为:接入层、网关层、业务服务层、支持服务层和基础设施层。除此之外,非常重要而又容易被忽略的还有:微服务开发框架、持续交付流水线、端到端工具链、工程实践与规范这些构成整个微服务架构体系的部分,它们都在微服务的架构中发挥着非常重要的作用。
tars 整体可以分为运营、平台、通信框架、公共组件与统一协议几个大块,用于支持上述微服务架构层次。
简单来讲,运营平台上,tars 可以支持不同语言服务的管理和运营,同时也支持页面级别服务的创建和发布;而在公共组件上,tars 提供了非常多强大的公共组件来负责不同的功能,包括日志组件、监控组件、主控组件与配置组件等;统一协议方面,tars 本身自带的二进制协议,非常适合高性能的场景,首先这个协议语言无关,自带接口描述,同时还有工具进行代码转换,可以大大提高开发效率。
聚焦到 tars-php 上,作为tars在php语言的解决方案,设计的时候主要考虑如下四个方面:
功能完善:对标现有 c 、java 与 nodejs 体系功能
灵活:论灵活,谁与 php 争锋?
轻量:用最轻量的设计,点到即止,即插即用
高效:插上 swoole 协程的翅膀,不得不飞
整个框架主要分为四个部分:
tars-client
tars-server
tars-ext 扩展
代码生成工具
在过去的一年中,tars-php 主要在丰富现有功能、构建更加开放的体系、引入 devops 的效率、更好地服务社区四个方面发力。
从 tars-server 功能层面来讲,tars-php 新增了 websocket server 和 pb server,使得现在一个服务模板,能够实现多达五种不同的服务。
通过使用 websocket server,用户可以有效扩展 swoole 功能,它支持多个端口、自定义
命令和非常灵活化的 fd 存储。
pb server 构建了一个 grpc 服务,这个服务部署在 tars 平台上,参与 tars 平台寻址,受 tars 平台管理。这个服务使用 grpc on http/2 作为网络通讯协议,使用 protobuf 作为编码协议,可以和其它 pb client 协同工作。
在开发效率上,我们也针对 pb client 做了优化,开发者同样可以通过我们提供的代码自动化生产工具,节约开发时间。
在 tars-php 与平台更好地结合方面,我们实现了针对 php 服务的专有特性监控,它可以监控 swoole 的 worker 数量、time_wait 等网络状态个数与 swoole 中每个 worker 占用的内存情况等数据,让开发者更了解自己的服务。
同时,新增的自定义路由功能,也赋能了现有的 http server,通过引入 lumen 引擎的方式,现在的路由功能也更加强大。
在日志方面,借助 monolog 的能力,我们与 elk 也进行了结合。简单的配置,就可以让日志入 elk,更加方便我们进行一些 debug 或是后续的数据挖掘。
为了构建 tars-php 的开放体系,我们引入了 client & server filters,它可以让开发者更加方便地在请求前后添加自己的代码。同时我们也开放了 tars 协议中,向 context 上下文写入的能力,使得分布式追踪唾手可得。
而为了让 php 开发者能够更多地使用 tars,同时降低自己的迁移成本,tars-php 现在也与 laravel、thinkphp、yii2、swoft 与 phalcon 进行了整合,后续还将重点接入 hyperf 与 easyswoole 等业界优秀的框架。通过接入 tars,相当于赋能了服务打包、云配置与 http/tars 双协议,又能保持原有的开发框架,一举两得。
在 devops 方面,tars 提供了官方的 docker 镜像,让开发者能够一键搭建开发环境。而在持续集成上,我们也提供了基于 jenkins 和 tars 平台 api 的自动构建方案,让你的代码提交到测试到部署,成为一条龙。
为了让开发者能够更快地使用 tars,我们也放出了一个使用 tars 的 http、tcp 与 pb 在内的多种 server 类型的弹幕服务,存储也涉及到了 redis 和 mysql,可以让开发者更容易在自己的项目里把 tars 跑起来。
tars-php 的开源之路刚刚起步,为了解决文档问题,我们也不断地完善现有的 gitbook,降低开发者的使用门槛。
在 tars-php 开源一年左右的时间里,我们的项目与衍生项目数超过了 10 个、github repo commit 数量超过 200 次、微信与 qq 群累计开发者社群人数 800 、packagelist 下载量 4万 。希望大家也能够加入 tars-php 的建设。

腾讯云服务器上挂酷q
啊里云服务器怎么使用方法
网易有道赴美上市怎么回事?网易有道赴美上市什么情况?
高防云服务器有多强大
云服务器cpu 可以升级吗
我的云服务器不想用了帮我把直接直接加到虚拟主机里吧
市值强势突破2000亿!伊利股份获机构一致看多……
apache无法打开运行php怎么办?