微服务架构风格

本文说明了微服务架构风格的优缺点,以及微服务架构的模式集合。

特点

通过将一个应用程序设计构建为一组松散耦合的协作服务。每个服务都实现了一部分的相关功能。对应于Scale Cube(参考分布式系统三维可缩放模型)的Y轴。

服务使用HTTP / REST等同步协议或AMQP等异步协议进行通信。可以彼此独立地开发和部署服务。每个服务都有自己的数据库。

优点

支持大型复杂应用程序的持续交付和部署

  • 更好的可测试性 - 测试服务更小,速度更快;
  • 更好的可部署性 - 可以独立部署服务;
  • 能够围绕多个自动团队组织开发工作。

每个微服务的代码规模更小

  • 使开发人员更容易理解和开发;
  • 开发人员的在使用IDE时更加高效;
  • 应用程序启动速度更快,加快了部署速度。

改善了整个应用体系的故障隔离能力

消除对技术堆栈的长期绑定

缺点

分布式系统的额外复杂性

  • 开发工具没有针对分布式系统的特定支持;
  • 集成测试更加困难;
  • 必须实现分布式的通信机制;
  • 处理分布式事务的复杂度;
  • 要处理多个开发团队之间的协调工作。

部署的复杂性

  • 容器化部署的复杂性;
  • 容器编排和服务治理的复杂性;
  • 需要更多公共服务的支持,例如服务发现,服务指标监控等。

额外的内存消耗

微服务架构的模式集合

微服务架构是一组架构模式和特性的集合,这个集合很大程度上定义了什么是微服务,也说明了如何应用微服务架构来构建大型/复杂应用程序。

首先要解决的问题

如何将一个大型复杂的应用程序分解为微服务?

分解模式

按业务领域分解模式划分微服务

云平台实践中的微服务设计原则

部署模式

每台主机多个服务实例

每个主机一个服务实例

每个容器一个服务实例

公共特性

微服务通用框架

中心化配置

通信模式

远程过程调用

消息

外部访问模式

API网关模式

服务发现模式

客户端发现

服务器端发现

可靠特性

断路器模式

数据管理模式

每个服务一个数据库

安全特性

JWT访问令牌

UAA安全认证

测试特性

服务测试

集成测试

可监控特性

日志聚合

应用指标

审计日志

分布式跟踪

异常跟踪

健康检查API

记录部署并更改

UI模式

服务器端UI

客户端UI

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏区块链

扫码登录的安全性分析

时至今日,各大互联网公司都已提供并鼓励使用扫码登录功能。扫码登录通过二维码在设备之间传递信息,使得用户可以使用安全可信任的设备(比如自己的手机)来控制不可信任的...

32690
来自专栏更流畅、简洁的软件开发方式

【自然框架】稳定版的Demo —— 三:主从表的维护方式

第一篇:【自然框架】稳定版beta1——源码下载,Demo说明 下载地址:还是老地方,自然框架的源代码、Demo、数据库、配置信息管理程序下载(2010.01...

25490
来自专栏王金龙的专栏

大型网站架构技术一览

前端指用户请求到达网站应用服务器之前经历的环节,通常不包含网站业务逻辑,不处理动态内容。

26310
来自专栏腾讯云技术沙龙

黄文俊:Serverless小程序后端技术分享

今天讲的是怎么使用Serverless做后端技术分享。我的职业偏向是后端,可能不是写前端,不是使用Node.js,更多是使用CR做后端语言,今天关注的微信小程序...

1.4K130
来自专栏区块链

第三方组件安全剖析

Apache Struts2再曝高危漏洞 前段时间,Apache Struts2又接连曝出了两个高危远程代码执行(Remoce Code Execution,下...

32190
来自专栏Albert陈凯

Hadoop离线数据分析平台实战——470地域信息数据展示Hadoop离线数据分析平台实战——470地域信息数据展示

Hadoop离线数据分析平台实战——470地域信息数据展示 项目进度 模块名称 完成情况 1. 程序后台框架搭建 完成 2. 用户基本信息展示...

29990
来自专栏IT技术精选文摘

分布式系统常见事务处理机制

为保障系统的可用性、可靠性以及性能,在分布式系统中,往往会设置数据冗余,即对数据进行复制。举例来说,当一个数据库的副本被破环以后,那么系统只需要转换到其他数据副...

19280
来自专栏逸鹏说道

基于HTML的PDF展示 pdf.js

很不错的一个插件,推荐给大家 pdf.js 是一个技术原型主要用于在 HTML5 平台上展示 PDF 文档,无需任何本地技术支持。 ? 在线演示:http://...

44180
来自专栏不止思考

大数据之数据采集

浏览器页面采集: 主要是收集页面的 浏览日志(PV/UV等) 和 交互操作日志(操作事件)。

37420
来自专栏我是攻城师

如何使用scala+spark读写hbase?

39170

扫码关注云+社区

领取腾讯云代金券