1 序言
最近,在软件架构设计领域,微服务非常火。
一提到软件开发、架构设计,如果不提微服务,不说说微服务的架构风格,那就落伍了,OUT了。
当然了,支持微服务的技术也是层出不穷,如微服务1.0中比较有名的来自Spring家族的Spring Cloud,以及国内在开源领域的翘楚阿里系中的Dubbo。其中,Spring Cloud提供了完整的微服务解决方案,为开发者提供了快速构建分布式系统的通用模型的工具,包括配置管理、服务发现、熔断器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等。而Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及服务治理方案。
随着微服务的持续火热,微服务2.0中的ServiceMesh也火起来了。Service Mesh,即“服务网格”,作为服务间通信的基础设施层,Service Mesh可以被看作是微服务间的TCP/IP,负责服务之间的网络调用、限流、熔断和监控。对于编写服务的开发人员来说,一般无须关心TCP/IP这一层(比如通过 HTTP 协议的 RESTful 应用),同样使用Service Mesh也就无须关心服务之间的那些原来是通过应用程序或者其他框架实现的事情,比如Spring Cloud、OSS,现在只要交给Service Mesh就可以了。
其实,上述说了那么多,介绍了那么多,基本都是集中在概念层面,在理论的层次上,以及支持微服务的开发技术、开发框架上,缺少这些概念、理论、技术和框架在实际项目中具体地应用。
对于大多数开发人员、架构师来说,除了理解微服务相关的概念,熟悉微服务相关的技术和框架,更关心如何在实际的项目中,应用这些概念、技术和框架。而这些,正是现在所欠缺的。
笔者从事软件开发多年,参与和指导过多个项目的架构设计,经历过单体架构、分布式架构、SOA架构,对软件架构的发展历史有一定的了解。
同时,在架构设计过程中,笔者也拜读了多位架构大师的著作,如温昱老师的《软件架构设计》、《一级架构师》,Peter Eeles和Peter Cripps的《软件架构设计的过程》等,以及各位技术大咖们在互联网上分享的各类架构相关的文档,使我受益匪浅。在此,我衷心的对这些前辈们表示由衷的感谢,谢谢你们对于知识的分享,以及无私奉献的精神。
最近,笔者有幸参与了某银行的一个采用微服务架构风格的项目,实践了一下微服务架构。
更确切地说,该项目是分布式服务架构向微服务架构的演进,使用更细粒度的服务和一组设计准则来考虑大规模的、复杂的系统架构设计,并非一个纯粹的微服务架构风格的项目。
秉着知识共享的精神,笔者写了这篇“微服务架构设计实践”的文章,一方面是对自己在架构设计方面的一个阶段性总结,另一方面是希望给其他刚刚从事软件架构设计的人员一个真实的、具体的软件架构过程的实践参考,为他们提供一个完整的实践案例。
在写这篇文章的过程中,在介绍微服务、软件架构设计思想的概念、方法论时,引用了各位大师、技术大咖们关于微服务、架构设计的文章中的内容,在此衷心地表示感谢。对于引用的内容,笔者并非简单地摘抄,而是结合笔者的理解和实践,做了适当的调整。如果存在不适、错误的地方,希望各位及时地指出,我将积极的采纳和修改。
微信扫一扫,关注该公众号
该系列文章已经在微信公众号发布,如果感兴趣,请关注。
以后更多知识通过该微信公众号分享。