......
作为SpringCloud教程的第一篇,不讲解具体的技术使用,通过一个通俗易懂的小故事,来解决这些疑惑。
本文分为三个部分:
这年,可能是十年前也可能是十五年前,小鹿入职了一家处于萌芽期的电商公司—并夕夕商城。
这个时候公司初创,人少,事儿少,用户少,当然了老板的钱也少,本着多快好省的信念,作为公司唯一开发工程师小鹿,跌跌撞撞的开发了一款能用的商城网站,架构如下:
网站整体非常的简单,在没什么用户的现阶段也是非常的好用,而且还非常的省心,但是没有想到的是,公司业务越来越好,用户量是越来越大,随着访问量的不断增大,项目经常卡死故障。
于是老板大手一挥,指引商城技术改革,emmm,还加钱招人,又招了小羊,小马数位同事,对并夕夕商城进行升级优化。
经过激烈的讨论,优化方向为:增加应用负载能力,即负载均衡,应用服务器集群
于是,噔噔蹬蹬,新的架构出现了
增加负载均衡之后,应用服务器不再是系统的瓶颈了,可以灵活的随着访问量增大的同时增加应用服务器集群的数量。
但是,时间长了,数据库出问题了,由于数据量的不断增加,再加上促销,日志等新业务模块的出现,数据库存取出现了问题, 一个数据库能够承受的人生压力毕竟是有限的。
于是老板大手一挥,指引商城技术改革,emmm,又加钱招人,又招了小牛,小明等数位同事,对并夕夕商城进行升级优化。
经过激烈的讨论,优化方向为:数据库读写分离
于是,噔噔蹬蹬,新的架构出现了
通过将数据库进行集群,读写分离,让数据库能够承受的压力得到大幅提升,但是随着对业务的进一步深根细作,新的问题暴露了。
......
于是老板大手一挥,指引商城技术改革,emmm,又加钱招人,又招了数位同事,对并夕夕商城进行升级优化。
经过激烈的讨论,优化方向为:引入全文搜索,Redis等技术。
于是,噔噔蹬蹬,新的架构出现了
新的架构一切看上去都是这么完美的亚子,团队众人终于可以过个好年了。
岁月静好。
随着并夕夕商城不断壮大,公司迎来了风投,风投两个亿,于是商城发展的更快了,新的问题出现了。
什么问题呢?
......
于是老板大手一挥,指引商城技术改革,emmm,有钱了就要做一些符合土豪身份的枯燥事情,大手一挥,挥金如土直接买了一个大牛团队来对商城进行技术优化。
优化方向:服务化。
所谓服务化,就是将公司的项目按照模块来进行分割,把每个模块都做成一个可以独立运行,单独部署的的应用程序,如图所示:
订单,商品,首页,促销等,每一个业务模块都是一个独立的应用程序,我们把这样按照模块划分的应用程序称之为服务。
......
等等等,好处不要太多。这样情况我们实际上也称之为 微服务 。
当项目进行服务化改造的时候,这个过程并不是一蹴而就,一拍脑袋就成功了。要把项目服务化,需要解决很多的问题,例如:
还有测试,自动化部署等等问题,都随着微服务的出现到来了, 上面的每个问题要进行解决都需要在项目中引入一个或者多个新技术,而这些新技术我们一般称之为组件,也是微服务学习的重点,一整套技术,一套解决上述所有问题的解决方案。
上面出现的问题,在此处我们暂时一笔带过,在所有的教程中,再进行详细的分析和讲解。
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/...
新技术会站在老技术的基础上,解决老技术出现的问题的同时,进行迭代和演化。
微服务技术是一整套技术,是一套解决多个问题的技术解决方案。
要掌握SpringCloud更多的用法,请持续关注本系列教程。
欢迎关注本人公众号:鹿老师的Java笔记,将在长期更新Java技术图文教程和视频教程,Java学习经验,Java面试经验以及Java实战开发经验。