千家信息网

什么是Microservices

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,今天就跟大家聊聊有关什么是Microservices,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是 Microservices微服务的诞
千家信息网最后更新 2024年09月22日什么是Microservices

今天就跟大家聊聊有关什么是Microservices,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

什么是 Microservices

微服务的诞生并非偶然: 领域驱动设计指导我们如何分析并模型化复杂的业务;敏捷方法论帮助我们消除浪费,快速反馈;持续交付促使我们构建更快、更可靠、更频繁的软件部署和交付能力;虚拟化和基础设施自动化(Infrastructure As Code)则帮助我们简化环境的创建、安装;DevOps 文化的流行以及特性团队的出现,使得小团队更加全功能化。这些都是推动微服务诞生的重要因素。

实际上,业界对于微服务本身并没有一个严格的定义。James Lewis 和 Martin Fowler 对 Microservices 架构做了如下定义:

简言之,Microservices 架构风格就像是把小的服务开发成单一应用的形式, 运行在其自己的进程中,并采用轻量级的机制进行通信(一般是 HTTP 资源 API)。这些服务都是围绕业务能力来构建,通过全自动部署工具来实现独立部署。这些服务,其可以使用不同的编程语言和不同的数据存储技术,并保持最小化集中管理。

Microservices 包含如下特征:

  • 组件以服务形式来提供:正如其名,微服务也是面向服务的。

  • 围绕业务功能进行组织:微服务更倾向于围绕业务功能对服务结构进行划分、拆解。这样的服务,是针对业务领域有着关完整实现的软件,它包含使用接口、持久存储、以及对旬的交互。因此团队应该是跨职能的,包含完整的开发技术:用户体验、数据库、以及项目管理。

  • 产品不是项目:传统的开发模式,是至力于提供一些被认为是完整的软件。一旦开发完成,软件将移交给维护或者实施部门,然后,开发组就可以解散掉了。而微服务要求开发团队对软件产品的整个生命周期负责。这要求开发者每天都关注软件产品的运行情况,并与用户联系的更紧密,同时承担一些售后支持。越小的服务粒度越容易促进用户与服务提供商之前的关系。Amazon 的理念就是"You build, you run it",这也正是 DevOps 的文化理念。

  • 强化终端及弱化通道:微服务的应用致力松耦合和高内聚,它们更喜欢简单的REST 风格,而不是复杂的协议(如WS或者BPEL或者集中式框架)。或者采用轻量级消息总线(如 RabbitMQ 或 ZeroMQ 等)来发布消息。

  • 分散治理:这是跟传统的集中式管理很大区别的地方。微服务把整体式框架中的组件,拆分成不同的服务,在构建它们时将会有更多的选择。

  • 分散数据管理:当整体式的应用使用单一逻辑数据库对数据持久化时,企业通常选择在应用的范围内使用一个数据库。微服务让每个服务管理自己的数据库:无论是相同数据库的不同实例,或者是不同的数据库系统。

  • 基础设施自动化:云计算,特别是 AWS 的发展,减少了构建、发布、运维微服务的复杂性。微服务的团队更加依赖于基础设施的自动化,毕竟发布工作相当的无趣。近些年开始火爆的 Docker 也是一个不错的选择(可以参阅《简述 Docker》)。

  • 容错性设计:任务服务都可能因为供应商的不可靠而故障。微服务应为每个应用的服务及数据中心提供日常故障检测和恢复。

  • 改进设计:由于设计会不断更改,微服务所提供的服务应该能够替换或者报废,而不是要长久的发展的。

MSA vs. SOA

微服务架构(MSA)与 面向服务架构(SOA)相似之处,比如,都是面向服务。通常 SOA 意味着大而全的整体集中式的解决方案。这让设计、开发、测试、发布都增加了难度,其中任何细小的代码变更,都将导致整个系统的需要重新测试,部署。而微服务架构恰恰把所有服务都打散,设置合理的颗粒度,各个服务间保持低耦合,每个服务都在其完整的生命周期中存活,互相之间影响降到最低。

SOA 需要对整个系统进行规范,而 MSA 每个服务都可以有自己的开发语言、开发方式,灵活性大大提高。

何时采用 Microservices

对于分布式设计来说,分布式第一定律是"尽量不要使用分布式"。因为系统的分布式一定会带来性能的开销。

微服务使得开发变得更简单,快捷了。以前开发人员耗费时间来搭建环境、熟悉代码结构,在微服务的世界里会简单许多。但是,微服务带来了一系列的非功能性需求,比如说事务、服务治理(注册,发现,负载,路由,认证授权,隔离)、监控(日志,性能监控,告警,调用链路)、部署、测试等。微服务依赖于"基础设施自动化"。

微服务不是"银弹",何时采用微服务还需考虑企业自身的需求。

看完上述内容,你们对什么是Microservices有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

服务 开发 数据 数据库 软件 设计 不同 业务 团队 架构 应用 管理 分布式 功能 基础 基础设施 系统 设施 自动化 复杂 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 无锡软件开发团队 数据库冈姆的稳重之靴 网络安全进社区的孩子 服务器管理口两个指示灯 手机浏览器数据库错误如何处理 安卓与服务器建立连接 辽宁计算机网络技术排行 数据库修改中文名称乱码 软件开发新人外派怎么样 查文献专利的数据库 天津优房网络技术有限公司 郑州向量互联网科技有限公司 中科院网络安全中心前端面试 私钥存储到数据库 管理软件开发软件 美国十大互联网科技公司排名 疾病相关蛋白组学数据库 网络安全考研比较好的大学 校园网络安全通讯稿件范文 定制软件开发合同模板 vs2008数据库操作 上海国基电子软件开发 网络安全文件共享服务器 seer数据库收集数据怎么整理 网络攻击等网络安全信息 数据库自动化系统的基本原理 如何快速入门数据库 seo 服务器 浏览器和服务器交互的协议是啥 网络安全认识1500字
0