F版本SpringCloud1—大白话为啥要有微服务?啥是微服务?SpringCloud为什么有那么多组件?

F版本SpringCloud1—大白话为啥要有微服务?啥是微服务?SpringCloud为什么有那么多组件?

前言

F版本SpringCloud1—大白话为啥要有微服务?啥是微服务?SpringCloud为什么有那么多组件?

  • 为什么要有微服务呢?
  • 什么是微服务?
  • SpringCloud 中为什么会有那么多的组件?

……

作为SpringCloud教程的第一篇,不解说详细的手艺使用,通过一个通俗易懂的小故事,来解决这些疑惑。

本文分为三个部门:

  1. 架构的演变,即为什么会泛起微服务手艺
  2. 什么是微服务,即微服务的尺度观点
  3. 微服务要解决什么问题,即微服务中那么多的组件都是干嘛的

从单体到微服务「小故事解说架构演变」

新手艺会站在老手艺的基础上,解决老手艺泛起的问题的同时,举行迭代和演化

这年,可能是十年前也可能是十五年前,小鹿入职了一家处于萌芽期的电商公司—并夕夕商城。

这个时刻公司初创,人少,事儿少,用户少,固然了老板的钱也少,本着多快好省的信心,作为公司唯一开发工程师小鹿,跌跌撞撞的开发了一款能用的商城网站,架构如下:

F版本SpringCloud1—大白话为啥要有微服务?啥是微服务?SpringCloud为什么有那么多组件?

网站整体异常的简朴,在没什么用户的现阶段也是异常的好用,而且还异常的省心,然则没有想到的是,公司营业越来越好,用户量是越来越大,随着接见量的不停增大,项目经常卡死故障。

于是老板大手一挥,指引商城手艺革新,emmm,还加钱招人,又招了小羊,小马数位同事,对并夕夕商城举行升级优化。

经由猛烈的讨论,优化偏向为:增添应用负载能力,即负载平衡,应用服务器集群

于是,噔噔蹬蹬,新的架构泛起了

负载平衡

F版本SpringCloud1—大白话为啥要有微服务?啥是微服务?SpringCloud为什么有那么多组件?

增添负载平衡之后,应用服务器不再是系统的瓶颈了,可以天真的随着接见量增大的同时增添应用服务器集群的数目。

然则,时间长了,数据库出问题了,由于数据量的不停增添,再加上促销,日志等新营业模块的泛起,数据库存取泛起了问题,一个数据库能够蒙受的人生压力毕竟是有限的。

于是老板大手一挥,指引商城手艺革新,emmm,又加钱招人,又招了小牛,小明等数位同事,对并夕夕商城举行升级优化。

经由猛烈的讨论,优化偏向为:数据库读写星散

于是,噔噔蹬蹬,新的架构泛起了

读写星散

F版本SpringCloud1—大白话为啥要有微服务?啥是微服务?SpringCloud为什么有那么多组件?

通过将数据库举行集群,读写星散,让数据库能够蒙受的压力获得大幅提升,然则随着对营业的进一步深根细作,新的问题露出了。

  • 新增添的商品搜索功效,使用数据库的模糊查询,效率低下,且查询效果不准确
  • 差别模块的数据接见热度不一样,有部门数据,例如首页数据,需要频仍的举行查询展示,每次都查询数据库效率太低
    ……

于是老板大手一挥,指引商城手艺革新,emmm,又加钱招人,又招了数位同事,对并夕夕商城举行升级优化。

经由猛烈的讨论,优化偏向为:引入全文搜索,Redis等手艺。

懂一点Python系列——快速入门

于是,噔噔蹬蹬,新的架构泛起了

ES+Redis集群

F版本SpringCloud1—大白话为啥要有微服务?啥是微服务?SpringCloud为什么有那么多组件?

新的架构一切看上去都是这么完善的亚子,团队众人终于可以过个好年了。

岁月静好。

随着并夕夕商城不停壮大,公司迎来了风投,风投两个亿,于是商城生长的更快了,新的问题泛起了。

什么问题呢?

  • 差别的营业模块之间代码耦合度太高,一个模块出问题,整个项目宕机
  • 维护难题,每次代码更新都要对所有的服务器举行重新的部署
  • 有些营业模块的用户接见量着实太小,没有必要部署在多台服务器上
    ……

于是老板大手一挥,指引商城手艺革新,emmm,有钱了就要做一些相符土豪身份的死板事情,大手一挥,挥金如土直接买了一个大牛团队来对商城举行手艺优化。

优化偏向:服务化。

服务化

所谓服务化,就是将公司的项目根据模块来举行支解,把每个模块都做成一个可以自力运行,单独部署的的应用程序,如图所示:

F版本SpringCloud1—大白话为啥要有微服务?啥是微服务?SpringCloud为什么有那么多组件?

订单,商品,首页,促销等,每一个营业模块都是一个自力的应用程序,我们把这样根据模块划分的应用程序称之为服务。

  • 可以根据需要自力的部署在服务器上,首页模块被接见的比较多,就可以多部署几个
  • 可以自力的接见数据库,每个服务都可以有自己的数据库
    ……

等等等,利益不要太多。这样情形我们实际上也称之为微服务

服务化要解决的问题?「更多问题到来」

当项目举行服务化革新的时刻,这个历程并不是一蹴而就,一拍脑壳就乐成了。要把项目服务化,需要解决许多的问题,例如:

  1. **服务之间怎么挪用?**订单服务想要挪用到商品服务的数据,怎么挪用?怎么挪用加倍的稳固,加倍高效?【服务挪用手艺】
  2. **服务之间怎么负载平衡?**订单服务要挪用商品服务,商品服务可能有许多个,怎么负载平衡【负载平衡手艺】
  3. **服务怎么被治理?**服务怎么定位?有故障了怎么处置?【服务注册与发现手艺】
  4. 故障怎么监控?微服务系统中营业模块许多,组件也许多,差别组件的指标差别,那么这些组件怎么举行监控【监控手艺】
  5. **故障怎么定位?**微服务架构中,一个用户的请求会涉及到多个内部服务的挪用,那么若何定位问题呢?【链路追踪手艺】
  6. **日志怎么剖析处置?**营业模块多了,日志也就多了,直接查看日志文件已经变的不显示了,那么若何对日志举行剖析查找呢?【日志剖析手艺】
  7. **权限治理?**微服务拆分服务之后,会有许多服务对外露出接口,这些接口若何举行统一的权限处置呢?【网关手艺】
  8. **服务挪用泛起问题怎么处置?**当一个服务由于种种缘故原由住手响应时,挪用方通常会守候一段时间,然后超时或者收到错误返回。若是挪用链路比较长,可能会导致请求聚积,整条链路占用大量资源一直在守候下游响应。怎么解决呢?【熔断,降级,限流】

另有测试,自动化部署等等问题,都随着微服务的泛起到来了,上面的每个问题要举行解决都需要在项目中引入一个或者多个新手艺,而这些新手艺我们一样平常称之为组件,也是微服务学习的重点,一整套手艺,一套解决上述所有问题的解决方案。

上面泛起的问题,在此处我们暂时一笔带过,在所有的教程中,再举行详细的剖析和解说。

什么是微服务【重点】

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.

  • 每个服务可自力运行在自己的历程里
  • 一系列自力运行的微服务配合构建起整个系统
  • 每个服务为自力的营业开发,一个微服务只关注某个特定的功效,例如订单治理,用户治理
  • 微服务之间通过一些轻量的通讯机制举行通讯,例如Restful API举行挪用
  • 可以使用差别的编程语言与数据存储手艺开发

官网链接https://www.martinfowler.com/articles/microservices.html

总结

新手艺会站在老手艺的基础上,解决老手艺泛起的问题的同时,举行迭代和演化。

微服务手艺是一整套手艺,是一套解决多个问题的手艺解决方案。

恭喜你完成了本章的学习,为你拍手!若是本文对你有辅助,请帮忙点赞,谈论,转发,这对作者很主要,谢谢。

F版本SpringCloud1—大白话为啥要有微服务?啥是微服务?SpringCloud为什么有那么多组件?

要掌握SpringCloud更多的用法,请连续关注本系列教程。

求关注,求点赞,求转发

迎接关注本人民众号:鹿先生的Java条记,将在历久更新Java手艺图文教程和视频教程,Java学习履历,Java面试履历以及Java实战开发履历。

原创文章,作者:28x29新闻网,如若转载,请注明出处:https://www.28x29.com/archives/2213.html