这篇文章主要介绍了微服务基本概念是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微服务基本概念是什么文章都会有所收获,下面我们一起来看看吧。
为什么会有微服务?
假如回到10年前,一天张三入职了电商企业—并夕夕商城。
公司初创,人比较少,公司网站的用户也很少,公司只有一个工程师
项目架构比较简单
没有想到的是,公司业务越来越好,网站用户量越来越大,单体架构的问题就暴露出来了,随着访问量增加,项目经常宕机
问题:架构简单 难以抗住高并发
于是,招人。对并夕夕商城进行升级优化。
分析升级的方向:
数据库 和 应用代码要放在不同的服务器上
增加应用负载能力【集群】
于是增加负载均衡。
分布式:一个系统 通过多台服务器 协同完成系统功能
集群:同一个系统放在了多台服务器上 且每个服务器上内容相同 复制了多份
负载均衡的问题
成本
Session
增加负载均衡之后,应用服务器不再是系统的瓶颈了,可以灵活的随着访问量增大的同时增加应用服务器集群的数量。
随着业务量不断增加,数据量也在不断增加,数据库出现性能瓶颈。
招人
在多位同事努力之下,对项目进行进一步的优化—读写分离。
上述的架构看上去非常的完美,但是,随着并夕夕商城业务量的不断增加,新的问题暴露了出来。
问题:
商品搜索使用数据库模糊查询不行,不精确,慢 【全文检索】
图书查询 模糊匹配
不同模块的数据访问的频率是不一样的(热度不同),首页数据访问量比较大,订单数据的访问量相比之下要小很多。所有的数据都去数据库取,影响首页访问速度 【缓存】
招人
所有的同事开始一起优化项目,商品搜索使用全文检索技术ES完成,并且引入缓存(Redis集群),于是架构变成了这个亚子。
随着并夕夕商城不断壮大,公司迎来了风投,风投两个亿,于是商城发展的更快了,新的问题出现了。
问题:
不同业务模块之间的耦合太高,一个模块出问题整个服务器宕机
维护困难,假如应用服务器集群200台,那么项目上线意味着需要部署200台服务器
譬如:修改了订单的代码 订单模块要重新部署 意味着所有的服务器都需要重新部署一遍
冗余,有些模块没有必要部署在所有的服务器上
招人:100个人的团队,对项目进行新的优化和升级—服务化(SOA),根据业务模块的不同,拆分为不同的应用。
以上就是分布式的架构
于是公司进入轰轰烈烈的服务化时代,但是有几个问题需要被解决,如下
每一个模块都是一个独立的项目 都可以独立启动 这样的做法 就叫做服务化 模块变成项目之后我们称之为服务 首页模块---》首页服务
这就是服务化 这就是微服务,微服务是:特殊的分布式架构【服务化】
首页的访问量比较大 就可以部署五个
订单的访问量小 就可以只部署一个
问题:
服务之间怎么调用?例如:订单服务需要调用商品服务的数据,怎么调用?
怎么负载均衡?服务之间负载均衡?app访问后台怎么负载均衡?
服务怎么被管理?例如:商品服务宕机了,怎么即时的通知订单服务?如果没有通知订单服务,订单服务发的请求都会阻塞,造成订单宕机,引发链式故障,整个项目崩溃
服务之间的异常处理?
......
以上每一个问题都需要一个新的技术解决,而引入的新技术就是微服务技术,SpringCloud(一套技术)
如何解决这几个问题 又需要用到一些新的技术,这些技术就是所谓的微服务的技术(SpringCloud)
基于上面的问题,整个并夕夕商城团队疯狂的努力,找到了一些技术(SpringCloud),分别解决了上述问题,架构图如下:
到此为止,并夕夕商城成为了一个微服务的架构。
服务化 微服务主要的内容就是按照业务模块拆分不同的应用服务,并且解决拆分之后遇到的问题
每个服务可独立运行在自己的进程里 每个服务独立部署启动
一系列独立运行的微服务共同构建起整个系统
每个服务为独立的业务开发,一个微服务只关注某个特定的功能,例如订单管理,用户管理【按照服务拆分】
微服务之间通过一些轻量的通信机制进行通信,例如Restful API(HTTP)进行调用【订单服务如何调用商品服务】
可以使用不同的编程语言与数据存储技术开发
官网链接:https://www.martinfowler.com/articles/microservices.html
SpringCloud=分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶。Spring Cloud是一个含概多个子项目的开发工具集,集合了众多的开源框架,他利用了Spring Boot开发的便利性实现了很多功能,如服务注册,服务发现,负载均衡等。
服务管理 需要一个技术
服务调用 需要一个技术
负载均衡 需要一个技术
.......
这些技术怎么来?
自己找,技术之间的整合没有一定的技术实力搞不定
SpringCloud,SpringCloud官方找了一套解决微服务问题的技术,做了封装和整合,让用户可以直接使用,不需要关心技术整合的问题
开发微服务相当于买一台电脑
自己组装,自己找微服务的技术相当于自己组装电脑
买品牌机,使用SpringCloud相当于直接买了一个联想的电脑,CPU 显卡等等都帮你处理好了
SpringBoot 和 SpringCloud有什么关系
使用负载均衡需要很多的配置,写配置
自己写配置
SpringBoot自动配置
SpringCloud 使用了 SpringBoot 作为底层,通过SpringBoot的自动配置简化分布式的开发
关于“微服务基本概念是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“微服务基本概念是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。