Page 35 - 网络电信2022年7/8月刊
P. 35
基于分布式微服务系统的跨主机通信问题及其解
决方案
陈利 张凯 戴炯
深南电路股份有限公司
摘要:传统单体式架构(Monolithic Architecture)的开发
周期长、难维护、难测试等特征,越来越难适应当前互联网技术
的发展需求,这也使得企业难以推进技术更新。随着移动互联网
的发展,企业被迫将其应用迁移至现代化UI界面架构以便能兼容
移动设备,这要求企业能实现应用功能的快速上线;此外,从技
术方面看,云计算及互联网公司大量开源轻量级技术不停涌现并
日渐成熟,比如:轻量级开发技术的出现如Spring Cloud;新
的轻量级协议如RESTful API和轻量级消息机制;简化的基础设
施如操作系统虚拟化如hypervisors;容器化如Docker,基础设施
即服务(IaaS)如Kubernetes等;新的可替代数据持久化模型如
NoSQL等;标准化代码管理如Github等等。这一切都催生了新的
架构设计风格——微服务架构的出现。微服务天生就是分布式
的,部署在各个主机上的服务系统会面临跨主机通信问题,如何
设计一个高效、安全又能适应分布式微服务要求的网络架构,该
文具有一定的指导意义。
关键词:网络架构;微服务;分布式;Docker;跨主机通信
传统单体式架构(Monolithic Architecture)的开发周期 制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围
长、难维护、难测试等特征,越来越难适应当前互联网技术的 绕着具体的业务功能进行构建开发,并且能够被独立地部署到
发展需求,这也使得企业难以推进技术更新。随着移动互联网 生产环境或开发环境中。在分布式系统中,还要允许服务可重
的发展,企业被迫将其应用迁移至现代化UI界面架构以便能兼 复部署。微服务是一种架构风格,一个大型的复杂的软件应用
容移动设备,这要求企业能实现应用功能的快速上线。此外, 被切分成一个或多个微服务组成。系统中的各个微服务可被独
从技术方面看,云计算及互联网公司大量开源轻量级技术不 立部署运行,各个微服务之间是松耦合的,互不依赖。每个微
停涌现并日渐成熟,比如:轻量级开发技术的出现如Spring 服务仅关注于完成一件任务或者说一个单一的功能,并能很好
Cloud;新的轻量级协议如RESTful API和轻量级消息机制; 地完成该任务。在所有情况下,每个任务代表着一个小的业务
简化的基础设施如操作系统虚拟化如hypervisors;容器化如 功能。
Docker,基础设施即服务(IaaS)如Kubernetes等;新的可替代数
图1 单体式架构应用
据持久化模型如NoSQL等;标准化代码管理如Github等等。这一
切都催生了新的架构设计风格——微服务架构的出现。
微服务天生就是分布式的,部署在各个主机上的服务系统
会面临跨主机通信问题,如何设计一个高效、安全又能适应分
布式微服务要求的网络架构是当前面临的一个普遍问题。
一.分布式微服务
1.什么是微服务
“微服务”源于2014年3月Martin Fowler所写的一篇文章
“Microservices”。微服务软件架构是一种软件设计模式,
一种互联网软件系统架构,它将单体式应用划分成一些小的服
务,服务之间互相协调、互相配合,为用户提供服务。每个服
务运行在其独立的进程中,服务与服务间采用轻量级的通信机
网络电信 二零二二年七,八月 63