介绍
微服务就是将原来一整个庞大的应用拆分为一个个独立的微服务,它们运行在各自进程中,通过轻量级的通讯机制进行通讯。
优点
快速迭代,易于开发和维护,启动快,局部修改容易部署,技术暂不受限,按需伸缩
rolling update
可以使服务平滑升级,即在不停止对外服务的情况下升级
微服务简单模式开发步骤
1.用现有技术体系开发单一职责的微服务
2.服务提供方将地址信息注册到注册中心,调用方将地址信息从注册中心拉取下来
3.通过门户后台(服务网关)将微服务API暴露给门户和移动App
4.将管理端模块集合到统一的操作页面上
微服务技术
服务注册与发现、服务目录、服务列表、配置中心
进程间通讯、负载均衡
服务生命周期管理、自动化运维
服务依赖关系
链路跟踪、限流、降级、熔断
访问控制
日志与监控
微服务应用框架
微服务架构
服务注册与发现
负载均衡
服务 网关
服务容错
配置管理
服务网关
负责将外部请求反向路由到内部具体的微服务
安全认证和防爬虫
限流和容错、日志、监控
单服务异常导致雪崩
如果没有对故障进行容错和隔离,则一旦某个单一后端发生延迟,可能在短时间内导致所有应用资源(线程、队列等)被耗尽,造成雪崩效应。
电路熔断器模式
当目标服务慢或者大量超时, 调用方能主动熔断;如果情况好转,则能自动恢复,这就是弹性容错,系统有自恢复能力。
正常情况,电路处于闭合状态,如果调用持续出错或者超时,则电路打开进入熔断状态,一段时间后,保护器尝试进入半熔断状态,允许少量请求进来尝试,如果调用仍然失败,则回到熔断状态,如果调用成功,则回到电路闭合状态。
舱壁隔离模式
像船舱一样,如果一个船舱破了,只需要关上舱门,其它船舱就可以不受影响。
例子:线程隔离,如果一个应用有ABC三个服务,90个工作线程,采用线程隔离,每个服务分配30个线程,当A服务慢了,给A的30个服务因线程慢阻塞到耗尽为止,但是BC服务上的60个线程可以不受影响,如果没有隔离,所有的90个线程都会很快被对A服务的调用耗尽,整个应用程序都会慢下来。
限流
通常指对服务限定并发访问量,比如单位时间内只允许100个并发,对超过这个限制的请求要拒绝并回退。