当当当当~~下半部分来咯,直接进入主题把,你们也能够关注个人微信公众号 Java周某人,能够免费领取一些大厂面试资料java
服务框架和治理node
微服务不少的时候,就须要有治理了。一个好的微服务框架通常分为如下14个部分。以下图所示。这就是开篇所说的,微服务涉及的东西不少,有些初创公司和业务不成熟的产品是不太适合的,成本比较高。ios
目前国内比较好的微服务框架就是阿里巴巴的DUBBO了,国外的就是spring cloud,你们能够去研究一下.面试
监控体系spring
监控是微服务治理的重要环节。通常分为如下四层。以下图所示。docker
监控的内容分为五个部分:日志监控,Metrics监控(服务调用状况),调用链监控,告警系统和健康检查。微信
日志监控,国内经常使用的就是ELK+KAFKA来实现。健康检查和Metrics,像spring boot会自带。Nagios也是一个很好的开源监控框架。架构
Trace调用链监控框架
调用链监控是用来追踪微服务以前依赖的路径和问题定位。例如阿里的鹰眼系统。主要原理就是子节点会记录父节点的id信息。ide
下图是目前比较流行的调用链监控框架。
微服务的限流熔断
假设服务A依赖服务B和服务C,而B服务和C服务有可能继续依赖其余的服务,继续下去会使得调用链路过长。若是在A的链路上某个或几个被调用的子服务不可用或延迟较高,则会致使调用A服务的请求被堵住,堵住的请求会消耗占用掉系统的线程、io等资源,当该类请求愈来愈多,占用的计算机资源愈来愈多的时候,会致使系统瓶颈出现,形成其余的请求一样不可用,最终致使业务系统崩溃。
通常状况对于服务依赖的保护主要有两种方式:熔断和限流。目前最流行的就是Hystrix的熔断框架。
下图是Hystrix的断路器原理图:
限流方式能够采用zuul的API限流方法。
Docker 容器部署技术&持续交付流水线
随着微服务的流行,容器技术也相应的被你们重视起来。容器技术主要解决了如下两个问题:
1:环境一致性问题。例如java的jar/war包部署会依赖于环境的问题(操着系统的版本,jdk版本问题)。
2:镜像部署问题。例如java,rubby,nodejs等等的发布系统是不同的,每一个环境都得很麻烦的部署一遍,采用docker镜像,就屏蔽了这类问题。
下图是Docker容器部署的一个完整过程。
更重要的是,拥有如此多服务的集群环境迁移、复制也很是轻松,只需选择好各服务对应的Docker服务镜像、配置好相互之间访问地址就能很快搭建出一份彻底同样的新集群。
容器调度和发布体系
目前基于容器的调度平台有Kubernetes,mesos,omega。下图是mesos的一个简单架构示意图。
下图是一个完整的容器发布体系
喜欢这篇文章的话,能够给做者点个喜欢,点下关注,天天都会分享Java相关文章!
记得必定要关注我哦,会不定时的福利赠送,包括整理的面试题,学习资料,源码等~~