用于管理复杂微服务架构的技术详解架构师
在2016年的OSCON和软件架构会议上,有三分之一的公共报告是关于微服务的。最多的抱怨是,管理一大堆微服务已经变成了一场噩梦。在本文中,您将找到有效管理微服务的有用技术。
几年来,微服务被认为是伟大想法,随着微服务的越来越多地实施,微服务的一些障碍暴露出来,许多问题需要被明确:
如果你将一个系统分成300个微服务,你将:
如何把它们连接起来?您会使用API、共享数据库、消息总线或其他的集成方法组合吗?
如何确定系统集成方案?是取决于特定微服务的需求吗?
如何管理数百个微服务之间的所有连接?
如何管理数百个web服务、API服务和数据库的基础设施?
最终, 如何使用微服务架构,却有不失去对系统的控制?
选择正确的工具对于回答这些问题是一种捷径。下面是推荐一些用于微服务架构的工具:
尽量使用容器容器是微服务的自然选择。对于微服务架构,您必须使用容器化,没有任何选择。Docker是最受欢迎的容器技术。
容器使您能够创建一个完整的自动化交付管道,在特定的环境中构建和测试新版本,通过创建一个容器实例来替换旧的容器,从而部署一个新的版本。这是快速部署和缩短上市时间的必要条件。
使用IaC不仅仅是轻量级的容器使得微服务架构成为可能。基础设施即代码(IaC)作为容器基础的支持技术,更能体现容器技术的价值。容器配置可以被看做一个文本文件。这个特性为旧的开发过程带来了一系列新的有趣的东西,比如:
将容器配置文件放入Git或Hg,并使用DVCS管理更改。
查看项目环境的变更历史。
比较环境,例如,比较测试环境和生产环境。
在本地机器上的环境之间轻松切换。
在团队中共享容器(环境)。
在开发人员的笔记本、QA服务器或云实例的生产集群上运行相同的多层应用程序。它与实际情况完全相同。
这一特性,可以被IaC充分使用,从而实现对微服务基础设施的管理。
容器化是通过脚本自动扩展服务的不可或缺的工具。如果你有一个高负载下的服务,根据实际的负责情况,你需要动态地增加或减少支持该服务的容器的数量。管理容器是一项非常重要的任务,因此我建议使用编排工具。
例如,自2016年夏季以来,Docker就有了一种内置的编排工具。此外还有很多其他的编排工具如K8S。
无服务器计算我必须强调无服务器,因为它已经改变了规则。无服务器架构不仅补充了 DevOps 的理念,更改进了当前 IT 组织实现更高业务敏捷性的观念,它极有可能改变整个IT的内在文化。使用Azure Function或AWS Lambda来触发操作或事件。这些工具有助于集成管道和消息处理。更为重要的是整个计算堆栈,包括运行功能代码的操作系统,完全由云提供商管理。与传统的基础架构即服务(IaaS)模型相比,这种方式大大简化了运算基础架构的管理,并结合了按使用进行收费的计费模式,提供了非常灵活且经济的运算选型。
API Gateway如果您将100个微服务直接连接到一起,您就会发现控制安全性、分析流量、创建可靠的通道,以及为高负载API调用提供一个弹性基础设施是多么困难。
您可以使用API网关来避免这些问题,并将API管理集中化。Azure API Management和Amazon API Gateway提供了一个云网关,用于创建、发布、维护、监控和保护API。你的微服务应该只知道API网关,并且只通过这个网关相互连接。
更重要的是,API网关有助于传统系统到微服务的迁移。方法是是更改原有系统对API的直接调用,将其改为对API 网关的调用。每个系统只知道API网关,而不了解网关内的其他子系统。然后,您可以很容易地对老系统进行拆分和更改。
企业服务总线API网关集中管理同步调用,企业服务总线(EnterpriseService Bus,ESB)将实现异步消息传递,以便消息用于内部服务。
有时候,在特定的情况下,在ESB和API网关之间进行选择是非常困难的。造成此障碍的原因是,ESB可以用于同步调用,通过实现两个队列,一个用于传出请求,另一个用于传入响应。另一方面,API网关可以通过在两边创建一个等待线程来发送异步调用。所以使用不同的技术,他们可以相互代替。
任何成熟的云平台都提供了可靠且可伸缩的消息总线。例如,AWS有简单的队列服务(SQS),而Azure有Azure Service Bus。而最流行的解决方案是ApacheKafka和RabbitMQ。
在分布式系统中,服务可能从一台机器转移到另一台机器上。这意味着当服务移动到具有不同IP地址的节点时,服务端地址会发生变化。另外如果服务使用动态端口,则可能关联不同端口。对于服务的这些动态变化,应用程序如何确定要连接到哪里,才能找到所需的服务。在这种情况下,系统需要一个服务发现解决方案。
服务发现提供了以下功能:
l 注册和注销服务
l 检查服务的某一特定实例的健康状况,
l 平衡“发现”服务之间的负载。
它包括创建一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。当我们想要使用服务发现时,有三种方案:
l 自己构建服务发现解决方案。
l 使用诸如Consul或 Zookeeper之类的解决方案。
l 云解决方案,如Azure命名服务或AWS应用程序发现服务
6765.html
架构架构师架构设计相关文章
- 前中电技术总监带你3分钟通晓,互联网架构20年以来的演进
- ATG技术架构概述[通俗易懂]
- 物联网网络架构_物联网技术有哪些
- 一文带你搞懂微服务架构深度解析:微服务的采用前提,技术与理念
- 架构技术之分布式消息队列
- 予路乾行连登JCIM顶刊两封面,阐释DBDD技术机理与应用场景
- 金融数据中心网络架构与技术
- 应用技术架构 —— 单体架构 & 垂直架构 & SOA 架构
- 数字化 IT 从业者知识体系 | 应用技术架构 —— 服务网格架构
- 【干货】PAG 动效组件受邀参加行业峰会,公开技术架构演进细节
- 鼓掌!阿里技术官亲荐“架构修炼宝典”,从基础到源码,一站到底
- 高并发网站技术架构详解架构师
- 技术开启12306之旅:Linux技术架构(12306linux)
- 构建高性能Redis连接池:利用切片技术(redis切片连接池)
- Linux查看网络请求:技术指南(linux查看网络请求)
- 优化Oracle数据库存储的管理技术(oracle数据库存储)
- Linux 分支架构:从技术到应用(linux的分支)
- 常见的WiFi攻击技术及检测方法总结
- Linux技术手册第六版:学习Linux必备指南!(linux技术手册第六版)
- Oracle数据库分页技术原理剖析(oracle 分页原理)
- 缓存微服务架构下的Redis缓存共享技术(微服务中共享redis)
- Oracle技术让广告实现数据智能化(ad oracle集成)
- MySQL高可用架构实现三主三从同步备份技术(mysql三主三从)
- 花式秀肌肉,诺基亚公布准5G技术进展!
- 技术干货|如何在微服务架构下构建高效的运维管理平台?