我对springcloud微服务的一些了解

什么是单体项目?

例如:积分系统(order-user)就是一个单体项目,可以在该项目中一直添加新的功能,所有的功能都集中在一个运行的web应用中,这种项目就叫做单体项目。

问题 单体项目有什么问题?

并发集中的
在这里插入图片描述功能强耦合在这里插入图片描述功能在项目中有强耦合,造成开发人员必须学习大量业务领域知识。掌握业务知识,成本非常高的,尽可能让一个团队,一个人只接触同一个业务领域的内容。

1.2项目拆分
除了上述问题存在需要拆分,比如 人员功能划分,项目被不同企业公司同时开发,都需要用到拆分,解决单体项目的问题也需要拆分。

横向拆分
目的:仅仅解决了一个项目分布式,并行开发的问题,必能解决单体项目的各种问题。

横向拆分就是将一个项目进行分层的拆分。

controller交给A

|接口文件

service交给B

|接口文件

持久层交给C

|接口文件

工具类,公用代码交给D

利用maven A依赖B,B依赖C,C依赖D

纵向拆分(行程微服务结构)
目的:将一个运行的系统,变成多个独立运行的系统,可以解决单体项目的问题

按照业务功能,领域不同,进行的划分。每一个划分出来的系统都可以独立运行,之

间的通信可以采用不同技术(rpc,http(RestTemplate))。

一个大型项目拆分:

商品系统是个完整独立运行的项目

用户系统也是

订单系统也是

购物车系统也是

在这里插入图片描述2.微服务
2.1单体项目拆分后结构
多个独立运行的web应用

集群,每一个项目运行成一个集群

调用,每个项目都需要被负载均衡调用

可以配置发布运行项目集群,每个独立系统都是有集群提供的功能,使用nginx这种负载均衡代理实现负载均衡访问

2.2庞大的集群管理功能问题
调用系统的信息需要动态管理。
nginx就是静态管理。负载均衡调用—配置文件
upstream order{

server1

server2

server3 down

}

upstream user{

server1

server2

server3

}

静态管理,造成维护成本增高
不是所有的后端的服务器都是稳定,长期的运行。宕机恢复不了,迁移,老化替换

所以需要引入动态管理
拆分后的系统集群相互调用的管理
考虑系统中由于拆分的结构过于复杂,独立运行系统过多导致某一个时间点某个服务器调用出现问题时,应该怎么处理。如果不处理,就有可能造成服务集群瘫痪

2.3需要引入微服务框架
什么是微服务
就是一个项目看成整体服务,进行纵向拆分之后,独立的每个项目就叫做微服务(order-user中 订单支付,用户积分就是微服务)
微:小的意思,相对小,相对于拆分之前的项目整体服务
服务:功能需要被调用。
微服务框架技术
微服务解决套路
springcloud+springboot+其他技术(redis mongoDB mysql)
springboot+dubbo
springboot+springcloud alibaba
springcloud基于springboot实现项目运行搭建的。具备多个不同组件,能够实现解决上述剔除的各种由于集群功能变得庞大出现的各种问题
总结上述内容:

早期单体项目,开发人不多,用户不多,功能不多,需求不多
现在开发多,用户庞大,功能多,需求多–单体项目出现问题
单体项目什么问题:
功能强耦合–开发学习成本高.
并发集中–用户体验差,一个功能完蛋,其他都完蛋
解决办法拆分:
横线拆分:只能实现并发开发项目,不能解决单体项目问题
纵向拆分:形成多个功能不同的独立项目
一味的拆分:
不能解决动态信息管理,静态文件配置维护成本过高
集群节点越多,单节点故障造成压力集中,集群瘫痪可能越高,需要解决
引入微服务框架解决
以框架思路和角度处理整个集群的问题。
springcloud+springboot

发布了45 篇原创文章 · 获赞 50 · 访问量 2037

猜你喜欢

转载自blog.csdn.net/zhaoyi666/article/details/105282277