浅淡微服务架构
一、首先咱们来看一看微服务的基本概念及特性:
微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个
服务运行在自己的进程中,服务间通信采用轻量级通信机制(HTTP)。
这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。
这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用
不同的数据存储技术。
微服务的特点:
- 每个微服务可独立运行在自己的进程里;意味着每个微服务都有tomcaat
- 一系列独立运行的微服务共同构建起整个系统;
- 每个服务为独立的业务开发,一个微服务只关注某个特定的功能;例如订单管理、用户管理等
- 可以使用不同的语言与数据存储技术
- 微服务之间通过轻量的通信机制进行通信,例如:rest api
- 全自动的部署机制
微服务优点:
- 单个服务更易于开发、维护
- 单个服务启动快
- 局部修改容易部署
- 技术栈不受限
- 按需伸缩
微服务缺点:
- 运维要求高
- 分布式固有的复杂性
- 重复劳动
微服务的适用场景:
- 大型、复杂的项目
- 有快速迭代的需求
- 访问压力大
不适用微服务的场景:
- 业务稳定
- 迭代周期长
作者大话:
看完上述的知识简介,相信你已经对微服务有了大致的认识了。如果你还是不太理解什么是微服务,微服务与传统的单体应用有什么区别,下面就让我用大白话跟你讲一讲。
首先应该明确一点,微服务并不一定比传统的单体应用功能更强大。就像,单体应用可以理解成一个绝世高手,一代宗师,名曰水瘦山寒,此人通晓天下武功,擅长百家兵器,无所不能,引天下之人膜拜。然,虽能者多劳,求艺拜师之人络绎不绝,等候队伍绵延至数百里外,更是踏破山门,最终因分身乏术,疲于应对。水瘦山寒百思不得其解,偶获奇书-----《微服务》,灵感大发。遂将自身百家武学,逐一拆分,轻功、剑法、刀法、拳脚……分授百名弟子,让百名弟子各自开山立派(微服务),相互独立,再普授天下求学之士。由于百余门派遍布全国各地,求学之人苦于四处找寻。宗师水瘦山寒决定将百余门派的地址、名称、可接纳人数、是否正常运营等信息记录在册(注册中心),并设立统一的招生服务中心(网关),面向世界招生。学员缴费报名后(oauth2.0鉴权中心),招生服务中心(网关)会自动根据名册信息(注册中心),带领学员到对应的门派学得武艺。宗师水瘦山寒随时监控各门派的运营状况,学员是否爆满,预测如果某些热门门派超员,立即开设分院(限流、负载、集群)。根据业务需求,开设VIP课程班,将紧密联系几门武功整合在一起,调配多家门派的武师上门教学(微服务调用)。凡事皆有利弊,《微服务》帮助水瘦山寒解决了根本问题,但对各门派(微服务)管理成本和难度上升,各门派的调派效率也略有下降,各门派也需要一系的硬件基础设施去维持运营。
二、以目前主流的SpringCloud Alibaba架构为例。
随着SpringCloud Netflix 相关技术整体进入维护模式 Ribbon、Hystrix、zuul、Eureka、config等。故就拿SpringCloud Alibaba为例进行讲解吧。跟着阿里走,打遍天下无敌手。
SpringCloud Alibaba相关组件这里就不赘述了。请参考 https://blog.****.net/chenqi3166/article/details/109996748