微服务的优势:
-
微服务是把一个庞大的单体应用拆分成一个个的多元应用,列如项目中的功能 :
-
登录
-
注册
-
添加
-
删除
-
搜索
-
更改.....
我们可以把单独的功能制作成一个个小型的Springboot项目,独立运行
-
-
,每一个小型微服务,都可以独立的升级、部署 不影响其他服务的运行,就算一个服务崩溃,也不会影响其他服务的使用
-
服务器之间使用http进行数据交互,不在使用内部数据交互,虽然麻烦,但是可以突破语言的限制,可以使用不同的编程语言进行项目开发,只需要使用http进行数据交互即可。
-
我们可以购买多台主机来部署这些微服务,把单机的压力分散到多台机器上,并且配置上不需要太高,可以极大程度的降低成本,安全性也可以得到很大的保证,也会避免出现算力不足而引发的程序崩溃
-
甚至同一个微服务可以同时存在多个,这样当其中一个服务器出现问题,其他服务器也在运行同样的微服务,这样就可以保持一个微服务的可用性
-
运用微服务架构可以应对当今时代的种种考验,传统项目的开发模式,需要进行架构上的升级
走进SpringCloud
简单介绍微服务的缺点
-
实现微服务并非是简单的项目拆分,我们还需要考虑到各种微服务的管理、监控.....,这样才能够及时的寻找和排查问题,因此微服务往往需要一整套解决方案,包括服务的注册和发现、以及容灾处理、负载均衡、配置管理等
-
微服务不像单体架构一样方便维护,由于部署在多个服务器中,我们不得不保证微服务的正常稳定的运行,管理上肯定是低于传统项目的
-
分布式管理的环境下,单体应用的一些功能就会比较繁琐,诸如 分布式事务.....
所有为了解决以上问题,Springboot应运而生。
SpringCloud是基于spring提供的一套分布式解决方案,集合了一些大型公司的开源产品,包括许多组件,一同组成SpringCloud框架,它利用springboot的开发便捷更加巧妙的简化了分布式系统的基础设施开发, 列如 服务的注册,配置中心,消耗总线、负载均衡、熔断机制、数据监控等,都可以如同springboot 的开发风格做到一键启动和一键部署。
许多小公司没有独立开发自己的分布式基础的能力,大部分都是使用SpringCloud的解决方案,以最低的成本开发符合当今时代的业务发展
SpringCloud架构,分布式的每一个场景,都是由对应的组件来处理, 开源分布式解决方案所提供的组件:
-
Eureka - 实现服务治理(服务的注册与发现),我们可以对所以的微服务进行集中管理,包括他们的运行状态和信息
-
LoadBalancer - 为服务之间相互调用所提供的负载均衡算法,合理分配算力
-
Hystrix - 断路器、保护系统、控制故障范围,防止危险扩大,与电闸的保险丝效果差不多
-
Gateway - api网关,路由,负载均衡等多种作用,如同路由器,控制数据包的转发
-
Config - 配置管理,可以实现配置文件的集中管控
微服务的玩法多样,目前只会这个