docker+swoft构建微服务
最近时间比较充裕,花了点时间研究一下微服务,学习过程中感觉这种架构还是有难度的,不过通过实践以及查找相关资料也算有了些收获,今天花了些时间把自己的学习内容做个简单的总结。
本人是做php的,相比java,php这种语言各方面处理能力还是差很多,但这不代表php不能实现微服务,然而swoole的出现缩短了php与java的差距,不了解swoole的可以先去swoole官网了解一下,
然后为了提高开发效率,每种语言也都出现了相关的框架,swoole当然也不例外,所以swoft出现了,网络上也流行着这么一句话,swoft也可以称为php界的spring boot,我作为PHPer,swoole的出现
让我改变了外界对PHP这门语言的偏见,今天结合docker + swoft + apollo + consul + mycat 对php如何实现微服务做个简单的介绍,话不多说,先上图

下面对一些概念做下解释
(一)Docker : Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
(二)Apollo : Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。
了解 apollo 可以去 github 上 ,地址 https://github.com/ctripcorp/apollo
(三)Apollo应用场景:随着业务的发展,应用系统中的配置会越来越多,配置之间也有不同的业务特点,比如业务依赖的数据库配置、缓存信息配置、索引存储配置等。这类配置一般比较稳定,不会频繁更改,通常会放在工程中作为配置文件随应用一起发布。 除了这些配置,还有一部分配置会经常发生修改,比如限流降级开关配置、业务中的白名单配置等。这些配置项除了变更频繁,还要求实时性,如果采取和应用一起发布的方式,那么每次变更都要重新发布服务,非常不方便。 为了解决这类配置问题,出现了分布式配置管理平台



(四)consul : consul用于微服务下的服务治理,主要特点有:服务发现、服务配置、健康检查、键值存储、安全服务通信、多数据中心等
(五)什么叫服务治理发现:起初我们的服务比较单一,各服务之间通过接口就能访问。后面服务越来越复杂出现了分布式,为了不引起单点问题,必然是多服务部署,如果还用原来的方式直接连接,那么在某个服务挂掉或者修改了信息,就会导致连接失败。如果连接端能够不去关心具体的服务配置,他只要连接到那个服务,后续的工作由其它服务保证,包括负载均衡、健康检查等,保证总有可用的连接那就行了,consul就是做这个的,当然,它的功能远不止这些,这里只是以服务发现为例


(六) swoft:首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈框架,内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-FPM,全异步非阻塞 IO 实现,以类似于同步客户端的写法实现异步客户端的使用,没有复杂的异步回调,没有繁琐的 yield, 有类似 Go 语言的协程、灵活的注解、强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等等,可以用于构建高性能的Web系统、API、中间件、基础服务等等

(七) mycat:Mycat是一个开源的分布式数据库系统,其核心功能是分表分库,即将一个大表水平分割为多个小表,存储在后端MySQL或者其他数据库里




今天就介绍到这里了,也仅仅讲了PHP做微服务的初步理解

浙公网安备 33010602011771号