基于微服务架构搭建应用,已经成为主流的开发方式,微服务在给我们带来一系列便利的同时,也会存在一系列的问题。

微服务存在的问题

1.png

这是一个非常简单的微服务示例,一共3个微服务,假设当两个服务进行调用的时候,突然网络出现了中断,由于这张图演示的微服务规模非常的小,很容易就会发现问题的所在,但是如果你的微服务变得越来越庞大的时候,系统功能越来越多的时候,比如下面的这张图如何去排查?

1.png

如何去找到出现问题的节点,很显然这就是微服务面临的最大的一个痛点:服务间网络通信的问题

为什么说网络通信是微服务架构的痛点?

分布式计算的8个谬论:

  1. 网络是可靠的
  2. 网络延迟为0
  3. 带宽是无限的
  4. 网络是安全的
  5. 网络拓扑是不变的
  6. 网络始终存在管理员
  7. 传输损耗为0
  8. 网络是同质化

为什么会有这8种缪论的存在呢,是因为我们工程师在开发业务系统的时候,潜意识里面很难去考虑网络相关的问题,很难会把网络相关的需求纳入到我们的设计中,因此就导致了这8个缪论的产生,其实在分布式的系统中,网络问题是经常出现的,而微服务这种架构,因为服务变得越来越多,变得更离散,交互也越来越多,所以网络问题也会出现的概率会更大,因此这就是微服务架构的最大的一个痛点。

如何管理和控制服务间的通信?
解决微服务网络通信的痛点,主要涉及以下几点:
1、服务注册/发现
2、路由/流量转移
3、弹性能力(熔断、超时、重试)
4、安全
5、可观察性

微服务系统出现故障,如何通过熔断、超时、重试这些弹性能力来提升系统整个健壮性和可靠性;网络安全至关重要,如何进行授权,进行身份认证也是需要考虑的;对于微服务来说,服务的可视化是非常重要的,也就是服务的可观测性,如何通过可视化的方式去查看整个服务的状态,系统的资源使用情况,而这些功能组合在一起就是service mesh。


捕风
353 声望1 粉丝