- GreatSQL 社区原创内容未经受权不得随便应用,转载请分割小编并注明起源。
- GreatSQL 是 MySQL 的国产分支版本,应用上与 MySQL 统一。
微服务零碎架构
背景
回顾一下微服务架构是如何进化产生的,最早呈现的是单体利用架构,起初为了具备肯定的扩大和可靠性,就有了垂直拆分架构,也就是加了个负载平衡,而到当初的微服务架构则是进一步在探讨一个利用零碎该如何设计才可能更好的开发、治理更加灵便高效。
什么是微服务架构
微服务架构的核心思想是:分而治之,就是开发多个围绕业务畛域的组件来构建利用,让组件能够独立的开发、测试、部署和减速。
其长处在于:
- 反对独立迭代按需扩大,适宜业务疾速变动和扩大
- 反对分布式或多团队开发,不同的团队负责各自不同的畛域,绝对独立、专一,也就更高效
- 反对多语言混合开发、多版本组件独立部署、测试和共存
微服务架构的前置条件
从技术角度看:服务注册、对立配置、平安认证、对立日志 / 告警、分布式事务、继续集成等根底服务要前置于业务模块之前实现,该局部工作如果在业务实现后,重构减少该局部性能会减少不必要的老本。
从团队角度看:架构和团队的影响是双向的,微服务在组织的落地须要实际或者点,须要组织外部成员在:服务划分、继续交付、问题剖析等畛域造成一些教训后,再分步骤推广。
微服务架构的准则
无状态准则
首先,须要定义一下状态,如果数据须要被多个服务或特定服务的多个阶段共享,能够将其成为状态。
无状态准则并不是说在微服务架构中不容许状态的存在,而是要把有状态的服务扭转成无状态的独立业务服务,比方:将状态数据在申请间传递或放到分布式存储中,都能够解决状态服务的问题,这样服务就能够按需动静伸缩。
Restful 通信格调
- JSON 申请和响应,轻量简略,人机可读
- 实现编程语言无关
- 基于无状态 HTTP 协定,易测试易扩大
前后端拆散
简略的说,就是前后端代码物理拆散,而不是将:JS, HTML, CSS, JSP 都堆到一起,前期难以保护。
微服务架构与 SOA 架构的异同
相同点:
- 业务被拆分成多个不同的服务
- 单个服务反对部署多个
- 繁多服务反对同时多版本部署
不同点:
- 微服务的指导方针中包含:每个服务应用独立的数据库存储
- SOA 服务之间通常通过 ESB 音讯总线进行通信,微服务之间通常间接通信
微服务架构实用的场景
- 研发团队:研发团队分布式、多开发语言场景下绝对适宜,人员在 20 人以上的规模
- 有独立的运维部署团队
- 业务简单:10+ 以上外围业务模块,且业务继续降级改良
- 我的项目须要长期迭代保护
- 业务处于高速发展期或成熟期
微服务架构不实用的场景
- 初创公司或 10 人以下的小团队
- 概念验证性质的我的项目
微服务与单体利用在生产率上的比拟
依据马丁·福勒介绍,在零碎复杂度较小时,单体利用的生产率更高,微服务架构反而升高了生产率。然而,当复杂度到了肯定规模,无论采纳单体利用还是微服务架构,都会升高零碎的生产率。区别是:单体利用生产率开始急剧下降,而微服务架构则能缓解生产率降落的水平。如下图:
结束语
在软件开发的世界,没有银弹,架构的抉择是基于研发团队、业务需要和市场机会等因素综合思考的后果,不要随声附和,也不要旧调重弹,
Enjoy GreatSQL :)
文章举荐:
面向金融级利用的 GreatSQL 正式开源
https://mp.weixin.qq.com/s/cI…
Changes in GreatSQL 8.0.25 (2021-8-18)
https://mp.weixin.qq.com/s/qc…
MGR 及 GreatSQL 资源汇总
https://mp.weixin.qq.com/s/qX…
GreatSQL MGR FAQ
https://mp.weixin.qq.com/s/J6…
在 Linux 下源码编译装置 GreatSQL/MySQL
https://mp.weixin.qq.com/s/WZ…
# 对于 GreatSQL
GreatSQL 是由万里数据库保护的 MySQL 分支,专一于晋升 MGR 可靠性及性能,反对 InnoDB 并行查问个性,是实用于金融级利用的 MySQL 分支版本。
Gitee:
https://gitee.com/GreatSQL/Gr…
GitHub:
https://github.com/GreatSQL/G…
Bilibili:
https://space.bilibili.com/13…
微信 &QQ 群:
可搜寻增加 GreatSQL 社区助手微信好友,发送验证信息“加群”退出 GreatSQL/MGR 交换微信群
QQ 群:533341697
微信小助手:wanlidbc
本文由博客一文多发平台 OpenWrite 公布!