您的位置:首页 > 新闻频道 > 国内新闻 > 社会民生>正文

服务网格ServiceMesh在云平台的应用

时间:2017-12-27 14:30:40    来源:国际财经网    浏览次数:    我来说两句() 字号:TT

李伟波、许杰丰(睿哲科技股份有限公司广州)

摘要:本文介绍了ServiceMesh(服务网格)的起源背景、架构组件、关键特性与应用场景以及结合云平台的应用初步介绍,供软件企业在做基于云平台的中大规模集群应用软件架构规划的参考。

关键词:ServiceMesh  Microservices  Istio 服务网格 容器 微服务

ServiceMesh、微服务和容器

微服务(Microservices)是一个架构理念,原则是将一个大型的单个应用程序或服务拆分为数个甚至数十个子服务,即微服务,各微服务将主体业务拆分为各子模块,分别开发、测试、部署,提供相对独立的服务。相对于传统的大型集中式架构,微服务尽可能的做到了模块解耦,它的优势在于各业务模块可相对独立的由各专业团队来开发和部署以及后期升级,更容易实施敏捷模式开发,单个模块的故障不会引发整个系统的塌方式崩溃,在实施负载均衡方案时也更灵活和简单。从2015年开始,微服务得到较广泛的生产环境应用。当前,采用的比较多的微服务框架主要是Netflix hystrix、阿里Dubbo和Springboot cloud 等。

容器技术则是近年来兴起的部署方案,基于Linux LXC提供轻量级的虚拟化,隔离进程和资源,为业务软件独立提供所需最低要求的系统环境。相比于虚拟机,容器拥有更高的资源使用效率,因为它不需要为每个应用分配单独的虚拟化的操作系统。此外,由于容器独立打包应用环境,使得它更容易创建、销毁和迁移。正因为容器技术的灵活、高效,使得它普遍应用于快速测试和生产环境部署,尤其受云平台厂商的青睐。在容器的集群部署方案中,Google提出的开源方案kubernetes受关注度和实际部署比例远超Docker的SWARM,成为事实上的容器集群标准。

ServiceMesh架构与场景

ServiceMesh是用于处理微服务架构中各服务间通讯的专用基础设施层,通过复杂的拓扑结构服务来提供各服务间可靠的请求传递。ServiceMesh使用一组轻量级高性能网络代理来实现通讯流量控制,这些代理与应用程序代码部署在一起,对应用程序透明。也就是说,应用程序只需按传统网络模式开发应用逻辑,而无须关注ServiceMesh的存在。

ServiceMesh与微服务和容器的关系为:微服务架构完成了服务分解,容器技术完成了微服务的快速和独立部署,而ServiceMesh则负责解决各微服务间的网络通讯。

为更具体说明ServiceMesh是什么,它能做什么,为什么会存在,以下以ServiceMesh的典型代表Istio为例讲解。

Istio的架构

在微服务架构中,当有大量服务相互调用时,它们之间的服务调用关系就会形成网格,如下图所示:

图中,绿色块为应用服务,蓝色块为网络代理组件Envoy,蓝色线条为网络间的调用通讯。在Istio中,Envoy是执行通讯的底层模块,是最基础的模块,在其上是控制层的策略和授权模块。完整的Istio架构如下图(摘自官网):

控制层各组件解释:

Pilot 负责在服务网格中管理Envoy代理的分布式部署的组件,通过特定适配器完成服务平台的适配,通过服务发现负载均衡池路由表的API完成对Envoy代理的流量策略下发;

Mixer通过各类属性的设置来制定流量策略,控制在服务网格中运行的服务流量行为;

Istio-Auth提供授权和认证,目标是提高微服务及其通信的安全性,而不需要修改服务代码;

Istio能做什么

Istio在微服务架构中统一提供非常关键的服务间通讯功能:

流量管理:控制服务之间的流量和流向(流量路由);

可观察性:了解服务之间的依赖关系,通过流量和流向提供快速识别问题的能力依据;

策略执行:将流量策略应用于服务之间的互动,通过配置网格而不是修改应用程序逻辑和部署方式来完成流量策略的下发;

服务间的安全和授权可控:为网格中的各服务提供认证鉴权,使其可在不同可信度的网络上部署通讯;

策略执行组件可以扩展和定制,以便与现有的ACL,日志,监控,配额,审核等解决方案集成;

Istio的应用场景

Istio出现,直接解决了在实施微服务架构和容器部署方案中的几个问题,才使得它一出现便获得极大关注:

完成了服务注册、服务发现、服务路由、负载均衡、熔断等基础功能;

解决了服务间调用的鉴权问题;

提供了服务间调用的流量QoS策略;

在这里列举一个典型的应用场景:某移动APP的某项服务要做版本升级,做完A/B测试后在生产环境做金丝雀测试,希望能导入5%的真实Iphone端用户流量到新的版本,用传统方式实现需要开发部门和运维部门共同制定方案,而在Istio环境中,只需一份策略配置文件就可完成。

总结

ServiceMesh的出现,大幅降低了微服务架构下应用程序的开发难度,极大的推动了微服务的普及,而设计上与容器的紧密结合,也顺应了容器集群和云原生平台的发展趋势,使得更多的软件开发企业和行业应用企业更快速的向云平台容器集群部署测试环境和生产环境应用。当前,ServiceMesh还处于起步和高速发展阶段,搭建一套可用的环境需要在微服务架构、云平台和容器集群方面的技术积累。睿哲科技在ServiceMesh刚推出时便积极关注和实践,目前已在自有云平台上提供了基于租户的独立ServiceMesh环境服务,有意向将测试环境和生产环境迁移至ServiceMesh的企业可适当关注。

请选择您浏览此新闻时的心情

相关新闻
网友评论
本文共有人参与评论
用户名:
密码:
验证码:  
匿名发表