微服务-框架

微服务-框架

ID:21848876

大小:1007.97 KB

页数:27页

时间:2018-10-20

微服务-框架_第1页
微服务-框架_第2页
微服务-框架_第3页
微服务-框架_第4页
微服务-框架_第5页
资源描述:

《微服务-框架》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、微服务-微服务以及其框架简介什么是微服务微服务架构需要解决哪些问题开源框架CompletableFuture什么是微服务微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP协议的RESTfulAPI)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、

2、工具对其进行构建。特点小,且专注于做⼀件事情轻量级的通信机制松耦合、独立部署微服务架构要解决哪些问题服务注册、发现负载均衡服务网关服务容错配置管理服务注册、发现和单体(Monolithic)架构不同,微服务架构是由一系列职责单一的细粒度服务构成的分布式网状结构,服务之间通过轻量机制进行通信,这时候必然引入一个服务注册发现问题,也就是说服务提供方要注册通告服务地址,服务的调用方要能发现目标服务服务注册后会发送健康信息到注册中心,注册中心收不到健康信息时会移除此服务支持集群部署,避免单点问题负载均衡集中式负载均衡在服务消费者和服务提供者

3、之间有一个独立的LB,LB通常是专门的硬件设备如F5,或者基于软件如LVS,HAproxy等实现1.单点问题2.所有服务调用流量都经过LB,当服务数量和调用量大的时候,LB容易成为瓶颈3.LB在服务消费方和服务提供方之间增加了一跳(hop),有一定性能开销。负载均衡主机独立LB部署较复杂,环节多,出错调试排查问题不方便。负载均衡进程内LB进程内LB方案是一种分布式方案,LB和服务发现能力被分散到每一个服务消费者的进程内部,同时服务消费方和服务提供方之间是直接调用,没有额外开销,性能比较好服务网关服务反向路由,网关要负责将外部请求反向

4、路由到内部具体的微服务,这样虽然企业内部是复杂的分布式微服务结构,但是外部系统从网关上看到的就像是一个统一的完整服务,网关屏蔽了后台服务的复杂性,同时也屏蔽了后台服务的升级和变化。安全认证和防爬虫,所有外部请求必须经过网关,网关可以集中对访问进行安全控制,比如用户认证和授权,同时还可以分析访问模式实现防爬虫功能,网关是连接企业内外系统的安全之门限流和容错,在流量高峰期,网关可以限制流量,保护后台系统不被大流量冲垮,在内部系统出现故障时,网关可以集中做容错,保持外部良好的用户体验监控,网关可以集中监控访问量,调用延迟,错误计数和访问模

5、式,为后端的性能优化或者扩容提供数据支持日志,网关可以收集所有的访问日志,进入后台系统做进一步分析。服务容错当企业微服务化以后,服务之间会有错综复杂的依赖关系,例如,一个前端请求一般会依赖于多个后端服务,技术上称为1->N扇出。服务之间相互依赖服务容错在实际生产环境中,服务往往不是百分百可靠,服务可能会出错或者产生延迟,如果一个应用不能对其依赖的故障进行容错和隔离,那么该应用本身就处在被拖垮的风险中。在一个高流量的网站中,某个单一后端一旦发生延迟,可能在数秒内导致所有应用资源(线程,队列等)被耗尽,造成所谓的雪崩效应(Cascadi

6、ngFailure),严重时可致整个网站瘫痪。单服务异常导致雪崩服务容错-最佳实践电路熔断器模式(CircuitBreakerPatten)该模式的原理类似于家里的电路熔断器,如果家里的电路发生短路,熔断器能够主动熔断电路,以避免灾难性损失。在分布式系统中应用电路熔断器模式后,当目标服务慢或者大量超时,调用方能够主动熔断,以防止服务被进一步拖垮;如果情况又好转了,电路又能自动恢复,这就是所谓的弹性容错,系统有自恢复能力。上图是一个典型的具备弹性恢复能力的电路保护器状态图,正常状态下,电路处于关闭状态(Closed),如果调用持续出错

7、或者超时,电路被打开进入熔断状态(Open),后续一段时间内的所有调用都会被拒绝(FailFast),一段时间以后,保护器会尝试进入半熔断状态(Half-Open),允许少量请求进来尝试,如果调用仍然失败,则回到熔断状态,如果调用成功,则回到电路闭合状态。服务容错-最佳实践限流(RateLimiting/LoadShedder)该模式像舱壁一样对资源或失败单元进行隔离,如果一个船舱破了进水,只损失一个船舱,其它船舱可以不受影响。线程隔离(ThreadIsolation)就是舱壁隔离模式的一个例子,假定一个应用程序A调用了Svc1/S

8、vc2/Svc3三个服务,且部署A的容器一共有120个工作线程,采用线程隔离机制,可以给对Svc1/Svc2/Svc3的调用各分配40个线程,当Svc2慢了,给Svc2分配的40个线程因慢而阻塞并最终耗尽,线程隔离可以保证给Svc1/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。