什么是微服务?
微服务,又叫微服务架构,是一种软件架构方式
它将应用构建成一系列按业务领域划分模块的、小的自治服务
在微服务架构中,每个服务都是自我包含的,并且实现了单一的业务功能
简单来说,就是将一个系统按业务划分成多个子系统,每个子系统都是完整的,可独立运行的,子系统间的交互可通过HTTP协议进行通信(也可以采用消息队列来通信,如RoocketMQ、Kafaka等)
所以,不同子系统可以使用不同的编程语言实现,使用不同的存储技术,但是,因为子系统服务数量越多,管理起来越复杂,因此,需要采用集中化管理,例如Eureka、Zookeeper等都是比较常见的服务集中化管理框架,同时,使用自动化部署(如Jenkins)减少人为控制,降低出错概率,提高效率。
场景
购物车应用
传统的一体化架构实现:
所有功能都被放在一个代码库中,业务都开展在一个基础性的数据库之下,功能包括:品牌管理、商品管理、接受付款、客服服务等。
当需要添加新品牌的详细信息时(有别于旧品牌设置的结构),此时开发者不仅需要为这个服务添加新的标签而修改代码,而且还要重构整个系统并进行部署
微服务架构:
可以帮助开发者解决使用旧架构时所面临的问题,并且是的这个购物车应用很容易被构建、部署、扩展。
因为他为搜索、推荐、品牌管理、商品管理、客户服务等业务分别创建不同的微服务、当需求来临时,它只需要修改并更新对应的微服务即可。
微服务的特点
- 解耦
同一系统内的服务大部分可以被解耦,因此作为一个整体,可以轻易的被构建、修改、扩展 - 组件化
微服务可以被看成相互独立的组件,这些组件可以被轻易的替换和升级 - 业务能力
微服务很小,它们可以专注于某种单一的能力 - 自治
开发者和团队可以独立的工作、提高开发速度 - 持续交付
允许持续发布软件新版本,通过系统化的自动手段来创建、测试和批准新版本 - 职责明确
微服务不把应用看成一个一个的项目,相反,他们把应用当成了自己需要负责的项目 - 去中心化管理
关注于使用正确的工具来完成正确的工作,没有标准化的方式或者技术模式,开发者有权选择最好的工具解决问题 - 敏捷性
微服务支持敏捷开发,任何新功能都可以被快速开发或丢弃
微服务的优势
- 独立开发
基于各个微服务所独有的功能,他们可以被轻易开发出来 - 独立部署
基于他们所提供的服务,他们可以被独立的部署到应用中 - 错误隔离
即便其中某个服务发生了故障,整个系统还可以继续工作 - 混合技术栈
可以使用不同的语言和技术来为同一个应用构建不同的服务 - 按粒度扩展
可以根据需求扩展某一个组件,不需要将所有组件全部扩展
版权声明:本文为weixin_45058888原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。