什么是微服务?php
微服务是一种架构风格。数据库
它能够经过强壮的模块边界和独立部署,来帮助你快速的扩展开发团队。后端
其实微服务自己不是什么新技术,只是随着业务的不断发展,对业务不断分层,不断拆分。缓存
它被业界公认为云计算时代互联网应用的主要构建方式,是每一位技术人员必须面对的主题。微信
为何要使用微服务?swoole
(1)好比,公司的不一样业务都会有不一样管理后台,每一个后台都有登陆、注册、权限管理、日志管理等模块。架构
这些模块在不一样系统中基本上都是相似的,无需每次都拷贝代码。并发
So,开发一个微服务,管理基础模块。框架
(2)好比,随着业务的并发性愈来愈高,访问DB数量过大,须要考虑引入缓存层。微服务
因为没有统一缓存服务,各个业务线都本身开发本身的缓存层。
你们都作着重复工做,稍有不慎可能缓存KEY产生冲突,形成数据混乱。
So,开发一个微服务,管理缓存层。
(3)好比,各个业务线操做数据库可直接进行拼接SQL查询。
那么经验少一些的开发工程师,写了一个低效率的SQL。
致使全表扫描直接卡死,直接影响到其余业务线系统的可用性。
DBA很差定位SQL是那个业务组,每次SQL调优都须要问候所有业务组。
So,开发一个微服务,实现数据调取层。
(4)...
应用场景还有不少...
你们能够根据各自业务进行服务拆分。
开发微服务应该考虑那些?
(1)衡量是否须要进行使用微服务?
微服务并不适合每一个人,因为技术人员少或者项目并很少的状况下,就不需开发微服务。
(2)考虑服务到达怎么的独立程度?
微服务到底须要多微小,这个是根据本身的业务状况而定,没有统一标准。
微服务并非越微越好!!!
设计原则:是给本身提供便利,而不是本身给本身挖坑。
(3)是否对微服务进行实时监控?
随着业务的愈来愈多,并发量,访问量,存储量 等等愈来愈大的时候。
须要考虑对微服务进行实时监控,考虑是否须要扩容,性能调优等等。
(4)微服务如何进行测试?
微服务使用的业务部门比较多,当新的业务部门使用时,如何便于测试?
在测试的过程当中,遇到问题如何在不影响其余业务的同时进行修复?
实际事情实际考虑,最好能提供测试用例。
(5)微服务如何进行治理?
随着项目的微服务愈来愈多,相似于“盘丝洞
”的服务应该如何治理?
具体问题,具体分析吧,我这也没具体思路,欢迎你们讨论。
微服务的调用方式?
HTTP接口 或 RPC。
这两种方式能够都试用下,具体那种更合适本身就选那种。
至于这两种方式有什么区别,我担忧我解释完了你们更疑惑。
我我的推荐用 RPC(远程过程调用协议)。
RPC 就像调用本地方法同样,对调用者来讲使用更方便。
RPC 开源框架不少,能够根据本身的开发语言进行选择适合本身的。
PHP 常见的RPC框架: phprpc、yar、thrift、gRPC、swoole、hprose。
备注
本文仅仅是抛砖引玉,具体在实现的过程当中,还有遇到不少问题。
欢迎你们进行讨论~
Thanks ~
做者:PHP后端开发者
免费提供技术咨询服务(本身懂的知识)。
QQ群:564557094。
关注微信公众号,留言便可,看到留言后会及时回复。