【云原生】【ServiceMesh】简介
一、服务网格service mesh是什么?
Service mesh:服务网格,用于控制应用的不同部分之间如何共享数据,应用的每一部分都是一个个“服务”,每个“服务”都由一项组件完成其业务请求,这样所有组件就组成一个服务网格,每个组件都执行特定的业务功能。服务网格内置于应用程序中的专用基础架构层,这个基础架构层可以记录应用的不同部分是否正常交互,因此他可以优化所有组件的协同工作方式和通信。
二、微服务已经做到各个服务之间协同通信工作,相互不影响了,为什么还需要服务网格呢?
在没有服务网格层的时候,逻辑管理的通信可以编码到每个服务中,但随着通信变得越来越复杂,微服务之间通信越来越复杂,逻辑管理的通信也变得复杂,这是时候,服务网格就专门处理复杂的服务通信问题,通过服务网格,可以将大量离散服务整合为一个功能应用。
三、服务网格如何运行?
服务网格运行使用到了网络代理的方式:
- 请求A发送对网站B的请求数据后,首先会被网站B的web代理收到。
- 通过了代理的安全措施检查后,它会被发送到托管此网页B的服务器。
- 接下来,网站B将返回代理并进行再次安全措施检查。
- 之后,网站B的响应数据才会从代理处发送给请求者。
每个应用微服务之间的通信都需要指定好规则来说明如何从服务A点到达B点,这些规则就在各个服务的逻辑管理层定义;服务网格就会在每个服务中提取逻辑管理的服务间通信规则,并将其抽象为一个基础架构层,并且服务网格不会在各个微服务运行时环境中添加新功能。当各个微服务进行通信的时候,请求将通过服务网格的代理在微服务之间路由,构成服务网站的各个代理也称为sidecar,因为sidecar与每个服务并行运行,与每项服务分离,独立运行,这些sidecar代理就构成了网格式网络。sidecar代理与微服务并肩协作,用于将请求路由给其他代理。
如果没有服务网格,每项微服务都需要进行逻辑编码,才能管理服务间通信,无法专注业务开发,并且通信故障难以诊断,因为管理服务间通信的逻辑隐藏在每项服务中。
四、服务网格是如何优化通信的?
每向应用中添加一项新服务或者在容器中运行的现有服务添加一个新实例,都会使通信环境变得更加复杂,并且可能埋下新的故障点,在复杂的微服务框架中,如果出了问题几乎找不到哪里出了问题,通过服务网格,获取各服务间的一切性能指标等信息,随着时间的推移,服务网格获取的数据逐渐积累,可用来改善服务间通信的规则,从而生成更有效、更可靠的服务请求。
例如,如果某个服务失败了,服务网络玩个可以收集有关在重试成功前所花时间的数据,随着某项服务故障持续时间的数据不断积累,开发人员可编写相应的规则,以确定在重试该服务前的最佳的等待时间,从而确保系统不会因不必要的重试而负担过重。
- 点赞
- 收藏
- 关注作者
评论(0)