微服务介绍

在介绍Spring Cloud之前,有必要先介绍一下微服务的概念。
最初我们在开发程序的时候,一般都是单体应用,在一个项目里面包含所有的功能,部署的时候也只需要部署一个包就可以。这种单体应用在项目发展初期确实有一定的优势,比较容易部署和测试。但是随着业务的不断扩大,单体应用就会变得臃肿,可维护性、灵活性逐渐降低,维护成本也越来越高。下面列举了单体应用常见的一些问题:
1.复杂度高:所有的业务逻辑都在一个项目中,导致项目的复杂度太高,代码逻辑也会变得混乱,边界模糊,缺乏条理。
2.部署成本高:随着项目的增大,构建和部署项目的时间也会增加,并且每次部署都会影响整个系统的访问,并且部署的风险也很大。
3.可靠性差:如果某个功能出了bug(比如死循环,OOM等),很可能导致整个应用的崩溃。
4.扩展性差:单体应用无法根据不同业务模块的需要进行灵活扩展,比如,对于整个应用来说,可能一部分模块功能属于计算密集型功能,需要强劲的CPU,而另外一些模块功能则是IO密集型,需要更大的内存和存储空间。由于这些模块属于同一个应用,都部署在一起,所以不得不在硬件的选择上做出妥协。

针对单体应用存在的这些问题,就提出了微服务架构的概念,微服务是系统架构上的一种设计风格,将单体应用按照不同业务拆分成多个小型服务,每个小型服务都运行在各自独立的进程中,不同服务之间采用轻量级通信机制进行通信(通常是基于HTTP的RESTful API)进行通信协作,每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制,不同的服务可以采用不同的语言开发。

微服务架构的优点:
1.易于开发和维护:一个微服务只会关注一个特定的业务功能,所以业务清晰,代码量较少,开发和维护单个微服务就会比较简单。
2.启动快
3.可以局部修改
4.技术栈不受限:不同的
5.按需伸缩:可以根据需求,实现细粒度的扩展,对于压力大的微服务按需增加服务器。

微服务虽然有很多优点,但是,事情有利就有弊,微服务的架构方式也带来了一些挑战。
1.运维要求比较高:原来的单体应用,只需要维护一个项目即可,现在微服务拆分了很多项目,自然也就需要更多的运维投入。
2.分布式系统固有的复杂性:分布式系统需要考虑系统容错,不同系统调用的网络延迟,以及分布式实务等问题。

参考资料:
1.《Spring Cloud与Docker微服务架构实战》 周立 著
2.《Spring Cloud微服务实战》 翟永超 著

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值