周志明架构课--04.微服务时代:SOA的革命者

微服务是一种轻量级的SOA方案,强调围绕业务能力构建独立自治的服务。其特征包括:业务导向、分散治理、独立组件、产品化思维、数据去中心化、轻量通讯、容错设计、演进式发展和自动化基础设施。尽管带来了灵活性,但微服务也带来了分布式系统的复杂性,需要解决服务发现、通讯等问题。各种技术框架如Eureka、Spring Cloud等应运而生,为企业提供了解决方案。然而,引入微服务需要考虑是否符合团队能力、业务需求,并确保具备足够的架构设计能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微服务最早被提出是作为SOA的一种轻量化的补救方案而被提出来的

微服务的概念

微服务是一种通过多个小型服务的组合,来构建的单个应用的架构风格,这些服务会围绕业务能力而非特定的技术标准来构建。各个服务可以采用不同的编程语言、不同的存储技术、运行在不同的进程之中。服务会采用轻量级的通讯机制和自动化的部署机制来实现通讯与运维。

九个核心业务与技术特征
1. 围绕业务能力构建

​ 有怎样的结构、规模、能力的团队,就会产生出对应结构、规模、能力的产品。

2.分散治理

​ 微服务开发团队有着直接对服务运行质量负责的责任,也应该有不受外界干预,掌控服务各方面能力的权力,能选择与其他服务异构的技术来实现自己的服务。

3.通过服务来实现独立自治的组件

​ 通过远程服务而非类库来提供功能,从而得到组件的隔离与自治能力。

4.产品化思维

​ 避免把软件开发看作是要去完成某种功能,而是要把它当作是一种持续改进、提升的过程

5.数据去中心化

​ 数据应该按领域来分散管理、更新、维护和存储。有时候一致性问题也可能是必须要付出的代价

6.轻量级通讯机制

​ 如果服务需要上面的某一种功能或能力,那就应该在服务自己的Endpoint上解决,而不是在通讯管道上一揽子处理。RESTful风格的通讯方式,在微服务中就是比较适合的。

7.容错性设计

​ 承认服务会出错,接收服务总会出错的现实。有了这个认识的前提,在设计微服务的时候就要求有自动的机制能对其依赖的服务进行快速的故障检测,持续出错的时候可以进行自动的隔离,在服务恢复好之后重新联通。

可靠的系统由不会出错的服务来组成,这就是微服务最大的价值所在

8.演进式设计

​ 承认服务会被淘汰。一个良好的设计,应该是能够报废的,而不是指望着它长久。

9.基础设施自动化

​ 服务一多,靠人工来运维这根本就是不可能的事情。所以会要依赖大量的基础设施来自动化完成

注意:以上9个是一个合理的微服务系统展示出来的内、外在表现,它能够指导你该如何应用微服务架构,而不能作为一种强加于系统中的束缚来看待。

这么自由的微服务理念咋不上天呢?以前提到的那个分布式问题就不存在了吗?还是得一个个的解决。于是各种技术框架纷纷出现。比如像Eureka、Consul、Nacos、Zookeeper、Etcd用来解决服务发现的技术、像Dubbo、Thrift、gRPC用来解决服务通讯的技术,真的是层出不穷。更甚至还有springcloud之类的全家桶,真的是给开发人员带来巨大的便利。

便对架构的要求也越来越高了。架构者如何在各种决策之间权衡能力也变得至关重要起来!

那有没有一种即可以得到微服务自由的权力、还能专注于自己的业务,同时又不用费力去解决分布式带来的问题的解决方案呢?

思考题

你所负责的产品是不是基于微服务的?如果是,它符合微服务的9个特征吗?如果不是,你的产品适合微服务架构吗?你所在的企业、团队适合引入微服务吗?

### 关于《凤凰架构》的知识点总结 #### 构建大型分布式系统的核心概念 《凤凰架构》作为一本专注于构建大型分布式系统的著作,涵盖了多个核心领域和技术实践。书中不仅探讨了传统的企业级应用设计原则,还深入分析了现代微服务架构下的最佳实践[^1]。 #### 技术选型与实现细节 针对不同的业务场景,《凤凰架构》提供了详尽的技术栈建议以及具体的实施方案。例如,在讨论高性能计算环境时,特别强调了异步消息队列的重要性及其应用场景;而在处理海量数据存储方面,则介绍了NoSQL数据库的选择标准及优化策略[^2]。 #### 实战案例分享 为了帮助读者更好地理解和掌握所学理论知识,《凤凰架构》收录了大量的实际项目开发经验和教训。这些真实的案例研究覆盖了金融、电商等多个行业领域,展示了如何运用书中的理念解决复杂问题并提升系统性能。 #### 微服务治理框架介绍 随着软件工程向更加灵活的服务化方向发展,“凤凰架构”也紧跟潮流地引入了一系列先进的微服务平台工具链。其中包括但不限于API网关的设计模式、服务发现机制和服务间通信协议等内容,旨在指导开发者建立健壮可靠的分布式生态系统[^3]. ```python # Python 示例:模拟简单的 API 网关功能 from flask import Flask, request app = Flask(__name__) @app.route('/api/<service>', methods=['POST']) def proxy(service): data = request.json # 调用对应 micro-service 处理逻辑... response_data = {"status": "success", "message": f"Request processed by {service}"} return jsonify(response_data) if __name__ == '__main__': app.run(port=8080) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值