2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」html
教程全目录「含视频」:https://gitee.com/bingqilinpeishenme/Java-Wikigit
为何会有微服务?web
假如回到10年前,一天张三入职了电商企业—并夕夕商城。数据库
公司初创,人比较少,公司网站的用户也不多,公司只有一个工程师编程
项目架构比较简单缓存
没有想到的是,公司业务愈来愈好,网站用户量愈来愈大,单体架构的问题就暴露出来了,随着访问量增长,项目常常宕机服务器
问题:架构简单 难以抗住高并发架构
因而,招人。对并夕夕商城进行升级优化。并发
分析升级的方向:app
数据库 和 应用代码要放在不一样的服务器上 增长应用负载能力【集群】
因而增长负载均衡。
分布式:一个系统 经过多台服务器 协同完成系统功能
集群:同一个系统放在了多台服务器上 且每一个服务器上内容相同 复制了多份
负载均衡的问题
成本 Session
增长负载均衡以后,应用服务器再也不是系统的瓶颈了,能够灵活的随着访问量增大的同时增长应用服务器集群的数量。
随着业务量不断增长,数据量也在不断增长,数据库出现性能瓶颈。
招人
在多位同事努力之下,对项目进行进一步的优化—读写分离。
上述的架构看上去很是的完美,可是,随着并夕夕商城业务量的不断增长,新的问题暴露了出来。
问题:
商品搜索使用数据库模糊查询不行,不精确,慢 【全文检索】
图书查询 模糊匹配
不一样模块的数据访问的频率是不同的(热度不一样),首页数据访问量比较大,订单数据的访问量相比之下要小不少。全部的数据都去数据库取,影响首页访问速度 【缓存】
招人
全部的同事开始一块儿优化项目,商品搜索使用全文检索技术ES完成,而且引入缓存(Redis集群),因而架构变成了这个亚子。
随着并夕夕商城不断壮大,公司迎来了风投,风投两个亿,因而商城发展的更快了,新的问题出现了。
问题:
不一样业务模块之间的耦合过高,一个模块出问题整个服务器宕机
维护困难,假如应用服务器集群200台,那么项目上线意味着须要部署200台服务器
譬如:修改了订单的代码 订单模块要从新部署 意味着全部的服务器都须要从新部署一遍
冗余,有些模块没有必要部署在全部的服务器上
招人:100我的的团队,对项目进行新的优化和升级—服务化(SOA),根据业务模块的不一样,拆分为不一样的应用。
以上就是分布式的架构
因而公司进入轰轰烈烈的服务化时代,可是有几个问题须要被解决,以下
每个模块都是一个独立的项目 均可以独立启动 这样的作法 就叫作服务化 模块变成项目以后咱们称之为服务 首页模块---》首页服务
这就是服务化 这就是微服务,微服务是:特殊的分布式架构【服务化】
首页的访问量比较大 就能够部署五个 订单的访问量小 就能够只部署一个
问题:
服务之间怎么调用?例如:订单服务须要调用商品服务的数据,怎么调用?
怎么负载均衡?服务之间负载均衡?app访问后台怎么负载均衡?
服务怎么被管理?例如:商品服务宕机了,怎么即时的通知订单服务?若是没有通知订单服务,订单服务发的请求都会阻塞,形成订单宕机,引起链式故障,整个项目崩溃
服务之间的异常处理?
......
以上每个问题都须要一个新的技术解决,而引入的新技术就是微服务技术,SpringCloud(一套技术)
如何解决这几个问题 又须要用到一些新的技术,这些技术就是所谓的微服务的技术(SpringCloud)
基于上面的问题,整个并夕夕商城团队疯狂的努力,找到了一些技术(SpringCloud),分别解决了上述问题,架构图以下:
到此为止,并夕夕商城成为了一个微服务的架构。
服务化 微服务主要的内容就是按照业务模块拆分不一样的应用服务,而且解决拆分以后遇到的问题
the microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.【官方文档】
官网连接:https://www.martinfowler.com/articles/microservices.html
SpringCloud=分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶。Spring Cloud是一个含概多个子项目的开发工具集,集合了众多的开源框架,他利用了Spring Boot开发的便利性实现了不少功能,如服务注册,服务发现,负载均衡等。
服务管理 须要一个技术
服务调用 须要一个技术
负载均衡 须要一个技术
.......
这些技术怎么来?
本身找,技术之间的整合没有必定的技术实力搞不定 SpringCloud,SpringCloud官方找了一套解决微服务问题的技术,作了封装和整合,让用户能够直接使用,不须要关心技术整合的问题 开发微服务至关于买一台电脑
本身组装,本身找微服务的技术至关于本身组装电脑 买品牌机,使用SpringCloud至关于直接买了一个联想的电脑,CPU 显卡等等都帮你处理好了
SpringBoot 和 SpringCloud有什么关系
使用负载均衡须要不少的配置,写配置
本身写配置 SpringBoot自动配置
SpringCloud 使用了 SpringBoot 做为底层,经过SpringBoot的自动配置简化分布式的开发
点赞支持下吧,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)
欢迎在留言区与我分享你的想法,也欢迎你在留言区记录你的思考过程。
以为不错的话,也能够关注 编程鹿 的我的公众号看更多文章和讲解视频(感谢你们的鼓励与支持🌹🌹🌹)