###1.什么是微服务
微服务是一种分布式的架构,它所有的组件(也就是服务)会被部署为单独的应用程序,并通过某种远程访问协议(Rpc/Restful
)进行通讯。分布式应用的挑战之一就是如何管理远程服务的可用性
和它们的响应
。服务可用性是服务消费者
连接服务并能够发送请求的能力,服务响应
则关注服务的响应时间。
###2.微服务的局限
并不是所有的业务系统都适用于微服务,不能说现在流行这个,我就把公司上上下下几千个系统全部放入Docker
,全部都架上微服务的袈裟,你应该静下心来,仔细分析你的商业需求、商业驱动、组织架构和团队技术环境,因为微服务
并不适应所有的场景。而且基于RESTful
的协议请求,很容易被多次重复调用,此时应考虑加入消息机制,利用消息进行事务的处理以及异步服务的调用,在此需要提醒各位在数据一致性
和高可用
方面做好取舍,准备好一致性的补偿机制。
###3.微服务的好处
打了这么多预防针,你还是跟到了这里,那么我们来谈谈微服务的好处,
- 应用太大,我们上线一个小功能,并不想再所有程序都打包上线,这很烦,我们需要拆开,拆成单个的服务出来。每个服务都有一个
Rpc
或者RESTful
的Api进行业务驱动,由类似于Spring cloud
或者Zookeeper
的服务管理者去发现和监听各个服务节点的状态。 - 拆出来的微服务,就可以交给不同的团队进行开发,维护更加简单,不会因为一个模块上线失败,而整体回滚。
- 部署方便,
Jekens + Docker
直接部署,对于前端而言,根本不知道后台什么时候突然部署了1w台服务,用户几乎0察觉,轻松应对秒杀等业务,流量下来之后,随时Stop服务。
###4.微服务的实现
- 1.网关
- 采用API的方式,制造一个所有的端都支持的网关,作为唯一的入口,可以提供授权、监控、负载、缓存、静态、返回相应等入口,建议使用
RESTful
的http
接口。 - 网关的作用
- 提供统一服务入口,让微服务对前台透明
- 聚合后台的服务,节省流量,提升性能
- 提供安全,过滤,流控等API管理功能
- 网关要考虑交互的方式
- 客户端 1:1 服务端
- 客户端 1:N 服务端
- 采用API的方式,制造一个所有的端都支持的网关,作为唯一的入口,可以提供授权、监控、负载、缓存、静态、返回相应等入口,建议使用
- 2.服务发现
- 3.服务调用
- 同步调用
- Rpc
- Rest
- 异步调用
- MQ
- 同步调用
- 4.服务可用
- 重试
- 限流
- 熔断
- 负载
- 降级
- 缓存
- 5.服务发布
- Jekins Docker