《重新定义Spring Cloud实战》——1微服务与Spring Cloud

举报
华章计算机 发表于 2019/06/04 12:48:19 2019/06/04
【摘要】 本书摘自《重新定义Spring Cloud实战》——书中第1章,第1.1.1节,作者是许进、叶志远、钟尊发、蔡波斯、方志朋、郭芳碧、朱德明。

第1章微服务与Spring Cloud

随着互联网的快速发展,云计算近十年也得到蓬勃发展,企业的IT环境和IT架构也逐渐在发生变革,从过去的单体应用架构发展为至今广泛流行的微服务架构。微服务是一种架构风格,能给软件应用开发带来很大的便利,但是微服务的实施和落地会面临很大的挑战,因此需要一套完整的微服务解决方案。在Java领域,Spring框架的出现给Java企业级软件开发带来了福音,提高了开发效率。在2014年底,Spring团队推出Spring Cloud,目标使其成为Java领域微服务架构落地的标准,发展至今,Spring Cloud已经成为Java领域落地微服务架构的完整解决方案,为企业IT架构变革保驾护航。

1.1 微服务架构概述

1.1.1 应用架构的发展

应用是可独立运行的程序代码,提供相对完善的业务功能。目前软件架构有三种架构类型,分别是业务架构、应用架构、技术架构。它们之间的关系是业务架构决定应用架构,技术架构支撑应用架构。架构的发展历程是从单体架构、分布式架构、SOA架构再到微服务架构,如图1-1所示。

image.png

图1-1 架构发展历程

1.单体应用架构

单体架构在Java领域可以理解为一个Java Web应用程序,包含表现层、业务层、数据访问层。从Controller到Service再到Dao层,“一杆子捅到底”,没有任何应用拆分,开发完毕之后变成一个超级大型的War部署。简单的单体架构水平分层逻辑如图1-2所示。

image.png

图1-2 单体架构水平分层逻辑

单体架构的优点:

易于开发:开发人员使用当前开发工具在短时间内就可以开发出单体应用。

易于测试:因为不需要依赖其他接口,测试可以节约很多时间。

易于部署:你只需要将目录部署在运行环境中即可。

单体架构的缺点:

灵活度不够:如果程序有任何修改,修改的不只是一个点,而是自上而下地去修改,测试时必须等到整个程序部署完后才能看出效果。在开发过程可能需要等待其他开发人员开发完成后才能完成部署,降低了团队的灵活性。

降低系统的性能:原本可以直接访问数据库但是现在多了一层。即使只包含一个功能点,也需要在各个层写上代码。

系统启动慢:一个进程包含了所有业务逻辑,涉及的启动模块过多,导致系统的启动时间延长。

系统扩展性比较差:增加新东西的时候不能针对单个点增加,要全局性地增加。牵一发而动全身。

2.分布式架构

什么是传统的分布式架构?简单来说,按照业务垂直切分,每个应用都是单体架构,通过API互相调用,如图1-3所示。

3.面向服务的SOA架构

面向服务的架构是一种软件体系结构,其应用程序的不同组件通过网络上的通信协议向其他组件提供服务或消费服务,所以也是一种分布式架构。简单来说,SOA是不同业务建立不同的服务,服务之间的数据交互粗粒度可以通过服务接口分级,这样松散耦合提高服务的可重用性,也让业务逻辑变得可组合,并且每个服务可以根据使用情况做出合理的分布式部署,从而让服务变得规范,高性能,高可用。

image.png

图1-3 分布式架构

SOA架构中有两个主要角色:服务提供者(Provider)和服务消费者(Consumer)。阿里开源的Dubbo是SOA的典型实现。

SOA架构的优点:

把模块拆分,使用接口通信,降低模块之间的耦合度。

把项目拆分成若干个子项目,不同的团队负责不同的子项目。

增加功能时只需要增加一个子项目,调用其他系统的接口即可。

可以灵活地进行分布式部署。

SOA架构的缺点:系统之间的交互需要使用远程通信,接口开发增加工作量。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200