微服务架构在分布式系统的设计和应用
2021-11-21于晓虹
于晓虹
(中国联合网络通信有限公司济南软件研究院 山东省济南市 250014)
微服务架构的分布式应用,不仅使得分布式系统获得改进赋能,其本身的高效、多点并发工作特点也得以发挥出来。由于原有的存储体系互相独立,微服务架构的设计应用中存在分布式的结构,通过将数据库复制、分区,它能保证分布式系统处理数据的一致性、可靠性。微服务架构的设计思路是解耦数据处理中心使其成为一个个具有实际功能的离散服务中心,从而整体上降低了系统的负载和耦合度。开发分布式系统的过程中,微服务架构的设计在代码层面就需要开始构建谋划,通过将功能模块分解为多个轻量型、可独立的运行系统,并有效整合,形成一个完整的分布式系统。这也是分布式系统开发过程中使用微服务架构的因素之一。成功地解决了单体应用的不足和局限,凸显微服务架构设计独特的优势。
1 微服务架构的设计原理
微服务架构在分布式系统中没有确切统一的使用规定,只是分布式系统有几点构建要求。分布式系统在物理上存在多个机器节点,分布于不同的数据域。这些节点作为整体统一对外提供服务,通过信息网络进行连接,将自身的区域细节分享到客户端。对于微服务架构而言,不同物理节点上有不同的数据等待处理,保持数据一致性存在较大的难度。从另一方面来说,其一致性问题由于不同微服务架构的数据对同一数据模块的描述保持一致,在这个过程中,许多的数据模块无法确保在客户端可见。因而在微服务架构的设计构建时,创建了许多个分库并进行及时耦合,在数据模块中,通过API Gateway 并行进行数据合并、运算。用时,在原有架构加入搜索引擎、缓存技术、离散式数据列等。微服务架构引入数据库耦合技术实现了各个数据系统高度自治且合理有序。微服务架构的轻量级协议亦使得分布式系统在处理数据时集成部署并进行持续不中断地传输信息。
2 微服务架构技术的主要设计内容和特点
2.1 微服务架构技术主要设计内容
微服务架构的原有的单体根据其功能可以进行拆分,以掌握其架构的具体组成部分。微服务架构按功能被拆分成一个个子部分后,每个子应用被部署在不同的物理节点上,且只完成原有单体应用的某一部分功能,具体操作属于该子部分对应的数据库或数据表格。它们彼此之间通过网络通信的连接通信,协调配合,最终作为整体统一输出对外服务。系统操控的各个物理节点存储着多个不同的多个数据库或数据表格,它们一起参与构建整个微服务架构。微服务架构技术需要调用不同物理节点的数据来完成分布式数据中心的数据处理工作。同时,微服务架构的组件可以算作是分布在联网的计算机上,它们彼此高度自治而又密切配合,共同完成通信协调和信息传递。
2.2 微服务架构在分布式系统中的特点
微服务架构在分布式系统中具有结构简化、负载均衡、存储量大等特点。首先,它的高可用性和性能需要复制分区数据库,并且各个离散的数据库之中,微服务架构需要能保证分布式系统的稳定性。微服务架构将分布式系统简化后,就好像单机数据库中为事务的隔离性设置了不同的级别,可以分为初级简化和高级简化两大类,初级简化又可以继续细分为一般简化,因果简化,逻辑简化,顺序简化等多种。其次,微服务架构在分布式系统中必须保证即使接口被多次调用,仍然对系统的数据运算、算法的执行产生决定性的影响,且与该接口之前被调用的结果一样。包括当下的信息搜索、通讯连接系统,也都运用到这个设计结构的原理。最后,微服务架构下的分布式系统得到数据量的扩展,资源共享是构造分布式系统的一个服务目标。分布式系统的数据负载量增加时其正常运行的能力、故障处理、组件配合等要得到稳定架构的固定,以防止各种BUG并发地出现,影响系统稳定性和系统服务质量。它的主要特征就是以上所述的几点。
3 微服务架构在分布式系统的应用现状
3.1 微服务架构在分布式系统中的应用场景及问题
微服务架构基于分布式系统的权限认证,以解决系统现有技术中的问题。微服务架构的广泛应用,离不开各种分布式服务的协调作业。在分布式环境下,架构之间存在复杂的依赖关系,其整体的高耦合度是系统平台的主要特征。分布式系统平台模块用于各个不同功能的模块。结构管理模块用于给用户提供组织机构的编辑、注销和添加的功能;数据管理模块用于给用户提供系统登录、首页界面模块、个人信息模块和功能菜单子模块;服务模块包括用户访问认证服务、数据权限更新服务、用户角色识别服务和令牌续期服务;数据访问模块包括资源访问拦截器、页面资源访问权限识别模块、数据资源访问权限识别模块和查询功能页面子模块。以上所述四种模块微服务在分布式系统中的数据处理应用场景,它们为系统用户提供各自的运算功能,独立执行又统一协调,将所有功能集成到分布式系统中。
3.2 微服务架构在分布式系统中的数据存储
传统的数据存储是将所有功能模块都打包(jar、war)在一个Web 容器(JBoss、Tomcate)中执行、部署,一个单体维护代码,即使是处理一个小需求,也需要将所有机器上的应用全部执行一遍,效率极低且增加运维的复杂度。而微服务架构在分布式系统中的存储则不同,它合理的利用了离散式的数据中心,耦合各个数据库已达到存储量最大化。微服务架构在分布式系统的存储体系均互相独立,且不是提供持久化的存储服务。微服务架构的存储结构使用Redis 来完成底层存储。微服务架构存储一个数据库需要调用多个节点进行处理。微服务架构中为确保数据存储时一个数据单元的多个操作的原子具有一致性,采取分布式事务处理方式进行数据存储。具体方式是事务的参与者、存储服务器、资源管理器分别处于分布式系统的不同物理节点之上。微服务通常是直接面对用户的,每个微服务通常直接为用户提供某个功能。类似的功能可能针对开户有一个服务,针对缴费是另外一个服务。在SOA 设计模式中这种情况通常会用到的模式返回一个大而全的结果兼顾到所有的客户端的需求。
3.3 微服务架构在分布式系统中数据分区
虽然分布式系统的节点间没有共享的内存,但是不应认为本地对象和远程对象是同一个对象,这就是微服务架构导致的数据分区结果。微服务架构分区以后,分布式系统可以共享同一个CPU 的信号量以及并发操作的控制。物理分区概念和处理模型对于分布式系统中的一些问题,可以做一些容错和更新处理,譬如检测以及顺序处理可以综合多个方案解决。分布式系统在微服务架构下的实现方法和服务治理方式是设计并实现一个基于ZooKeeper 的分布式服务中间件,并执行存储命令。首先,采用普通Java 接口作为微服务载体,分布式服务包含两个基本的元素:服务提供者、服务使用者。其次构件与其相似的SOA 架构。SOA 架构相当于单体服务的拆分,从而形成一个共享的基础服务。这样拆分可以对一些性能瓶颈的应用进行单独的优化和运维管理,也在一定程度上防止了垂直拆分的重复造轮子。从单体服务到SOA 的演进,需要结合水平拆分及垂直拆分。微服务架构运用和SOA 统一的协议进行服务间的通信,服务间运行在独立的硬件平台上,同时将分布式系统服务化。微服务架构通过对SOA 架构的引入,常用于分布式系统的应用开发以及传统Web 应用。
3.4 微服务架构在分布式系统中事务实践
微服务架构下,不同分布式系统间存在大量的基于http 或rpc消息的网络通信,接口的重复调用以及消息的重复可能会经常发生。在具体网络事务实践中,网络波动导致服务提供方的接口被调用了两次,当接口被重复调用时,消息被系统组织重复传送。这种实践错误使系统接口的调用程序发生紊乱,从而导致系统bug 呈现出来,甚至触发未关闭的重试机制。微服务架构在实践过程中表现出幂等性,即包含相同业务ID 参数的请求将被拒绝。后台有通讯,前台就需要依据数据管理通讯过程,一个服务下线/更新/升级,前台就要重新部署,当前台是移动应用的时候,通常业务变化的节奏更快。另外,通讯服务的接口调用也在微服务架构的幂等性原则下发生,用户登录信息和权限管理是在系统内部一个名称为(OAuth)的地方统一维护管理。它利用幂等性原则提升远程接口服务的易用性,保障微服务架构集群的服务治理和故障处理能力。
4 微服务架构在分布式系统的应用优势与前景
4.1 微服务架构在分布式系统的应用优势
微服务架构综合互联共享平台开发思维,利用互联网IT 技术构建平台对用户的访问系统。接入设备和数据访问通过认证、授权,使平台能接待一定数量的客户访问且具备检测和防御能力,微服务架构的设计应用优势也在于此。从另一方面来说分布式系统使用X86 集群、虚拟化管理和扩展,具体应用与平台之中。同时,微服务架构可以横向扩展,容量和并发不再受限,系统容错和可维护性强。微服务架构的另一方面应用优势是提供安全可靠的服务容器,避免复杂易错的逻辑算法,同时固化公共组件,避免组件耦合,降低应用系统的开发工作量。
4.2 微服务架构在分布式系统的应用前景
微服务架构在使用现有的分布式应用框架下,需增加约束条件来适应微服务架构模式。除一致性、扩展性两个基本元素外,需要引入第三个元素:服务协调中心,这样可用来避免在大规模集群时配置复杂的服务处理器。所以微服务架构的发展趋势可从以下几个技术突破点探知。首先是提出微服务架构下的接口就是服务的架构内涵,将能够实现简单通信协议的远程接口调用方式作为架构基础。其次是将主流框架和容器的按工作量实际合理集成,坚持“接口即服务”原则,使用动态class 直接调用Java 方法的方式取代Java 反射式重复调用。在高并发下单纯使用Java 反射式调用方式能使性能提升8%到15%,使得微服务架构的分布式应用扩大到容器高度自治的层面。
5 结束语
不管是单机数据库还是分布式存储系统在微服务架构下的应用,对一致性、扩展性和兼容协调性是一样的。不过由于分布式系统数据的分布式存储以及网络通信状况的复杂,使得分布式系统要保持数据一致性相比单机应用要考虑更多复杂的因素,实现也要困难的多。是割裂了事物共性和个性之间的联系。通过分析行业现状,提出了微服务架构建设要求和关键技术方案。结合多个应用平台项目的落地实践数据,得出切实可行的目标平台应用架构。分布式系统平台还需要加强网络安全的3 个领域功能:权限、认证、完整性。由于各类加解算法,以及保密的密钥,系统的稳定性与可靠性获得较大的提升。同时,在通讯系统上应用相关安全技术,响应了国家倡导的通信软件安全、自主可控应用方针。