一个大型的项目往往会包含数百上千个服务,形成一个服务集群。一个业务需要多个服务配合完成,当业务越来越多越来越复杂的时候,服务之间的调用关系就会越来越复杂。
1、当业务越来越多越来越复杂的时候,服务之间的调用关系就会越来越复杂,那么微服务是如何处理的呢?
微服务中的“注册中心”,它可以记录每一个服务的ip端口,以及主要有什么作用。一个服务调用另外的服务时,不需要自己记录对方的ip,只需要去找注册中心即可,从注册中心获取对应的服务信息。
2、随着服务越来越多,每个服务都有自己的配置文件,若需要逐一的去更改配置非常麻烦,那么微服务是如何处理的呢?
微服务中的“配置中心”,它可以去统一的管理服务集群中成千上万的配置,若有配置变更,只需要找到配置中心即可。他会通知相关的微服务,实现配置的热更新。
3、当我们的微服务运行起来以后,这时用户过来访问我们,那么微服务是如何过滤用户且定位请求的呢?
微服务中的“服务网关”,它一方面是对用户的身份进行校验,另一方面可以把用户的请求路由到我们具体的服务。在我们路由的过程中,我们可以做一些负载均衡,而这时服务接收到你的请求去处理业务,该访问数据库就去访问数据库,再把查询到的数据返回给用户就可以了。
4、当用户群体多时,数据库肯定是扛不住这种高并发的,那么微服务是如何处理的呢?
加入缓存,缓存就是把数据库数据放入到内存中,内存的查询效率肯定是要比数据库快很多的。而且这种缓存还不能是单体缓存,对应的高并发,还得做成分布式缓存,也是一个集群,用户请求先到缓存未命中了,再去查询数据库。
5、业务中还会有复杂的搜索,简单的查询可以走缓存,一些海量数据的复杂搜索统计和分析走不了缓存,那么微服务是如何处理的呢?
用分布式搜索。(数据库职责就是数据的写操作还有就是事务类型安全的存储)
6、在微服务里边,它的业务往往会跨越多个服务。一个请求来了,先调用了A,A再调B,B再调C。整个业务的链路就会很长,调用总时长就会是每个服务执行时长之和,所以性能会下降,那么微服务是如何优化的呢?
用异步通信。请求来了,调用了A,但服务A不是去调用服务B和C,而是通知B和C去干活,而服务A就结束了。所以它的业务链路就变短了,执行时间也缩短了,性能也就增强了,所以异步通信可以大大提高我们服务的并发,在一些秒杀高并发场景下就可以去利用。
7、如何解决异常定位?
微服务中有两种组件,第一个是分布式日志服务,它可以去统计整个集群当中成千上万的服务中的日志,统一的做一个存储和统计分析,将来出现问题就好定位了。第二个是系统监控链路追踪,它可以实时监控整个集群当中每一个服务节点的一个运行状态,一段出现任何问题,可以直接定位到具体的某一个方法,那么你就可以快速的定位到异常所在了。
微服务得用自动化去部署,用持续集成