1.前言本文是《大话云原生》系列的第二篇。第一篇推出后,受到大家的欢迎,也有很多朋友联系我Cheermeup,谢谢!我会一直写下去的!上次书介绍完《煮饺子与docker、kubernetes之间的关系》后,小娜同学(我老婆)问:为什么不把服务开发成一个应用?什么分布?这感觉庞大而复杂,不是吗?你为什么要这样做?那么云原生的第二篇——负载均衡,现在就开始吧!2、从路边摊开始,周五晚上加班,下班的时候已经很晚了。我给小娜打电话,打算去吃个烧烤,就去了我们常去的“情侣档”烧烤。到了才发现原来“夫妻档”升级了,现在变成了“夫妻餐厅”。由于时间不早,店里人不多,就和老板娘聊了聊。说说小饭馆的昨天、今天和明天!老板娘介绍:“在路边摊的时候,我们刚结婚,资金有限,想开个路边烧烤摊。我老公负责烤串,我负责服务收银和上菜,钱少!”老板娘为人谦和,等我老了,说不定就做烤串生意,谁让我爱吃!老板娘说,她之所以走到今天,主要是因为以下几点:她的摊位很少有人等候食物。因为摊位的桌椅板凳容量通常有限,顾客通常不会那么多,总的食物需求上限基本固定,比较容易协调。沟通顺畅、快速。一边点菜,一边开始做饭。做好了,再吼??一声,就可以上桌了。短小精悍,容易转身。夫妻俩之所以选择从路边摊开始,是因为船小,容易掉头。有可能工作一段时间后,发现这个位置的客流量少了,可以立即停止经营或者换个位置。哎,算了,夫妻俩有点像现阶段的一些软件服务创业公司。他们刚开始创业的时候,一般生产的应用服务都是单体应用。笔者也看到一些小的创业公司上来想搞微服务云原生,我觉得这不太现实。企业的结构是一步步演进的,不要总想着一口吃掉一个胖子。如果京东和淘宝从做应用服务的第一天起就想做今天的样子,肯定活不过今天。就像一个没开过餐厅的人,第一次想开五星级餐厅,等着他十有八九会失败!我这里说的单体申请的特点其实和路边摊类似:能接受的申请数量是有限的。首先,在需求方面没有那么多用户。内存、CPU配置有限。单体应用的视图层、控制层、持久层都在一个应用中,调用方便,响应迅速。服务之间没有远程调用RPC,响应速度更快,特定服务请求的响应结果更快。开发简单,上手快,三五人团队,易于管理和使用。老大决定不干了,随时可以翻身,基本不会太痛苦。还是要恭喜老板娘,赚钱有道,总结经验!3、开餐厅和负载均衡之前的一段时间,有人愿意排队吃夫妻做的烤肉。夫妻俩想,我们两个做不到,怎么办?雇用和扩展。你在招募谁?当然是厨师,端菜和收银的老婆还是可以自己做。主要原因是丈夫受不了这份工作了。是的,那就请一个厨师。总不能让多出来的客人站着吃吧?租附近的商店,购买更多的桌子、椅子和长凳。同理,如果软件应用中单一的应用服务不能满足用户的需求怎么办,增加服务器,部署更多的服务,负载均衡。我们来谈谈客户端负载均衡和服务器端负载均衡。年轻的夫妻一口气为餐厅配置了三名厨师(包括丈夫),足够了。老婆把奇数单给了张大厨,双数单给了李大厨。两人都做不到,只好把命交给了丈夫。反正外人不要白用,我家有空也可以歇一歇。她说给谁就给谁,她有自己的一套算法。这种模式就是“客户端负载均衡”。作为客户端,妻子调用“厨师”服务,记住总共有多少位厨师,然后根据自己的算法将用户请求转发给其中一位厨师。我们常用的每一个SpringCloud服务在请求其他微服务时,都会在内部维护一个微服务列表,然后根据请求目标和算法从微服务中选择一个服务进行远程服务调用。一天,两位厨师提出意见:做这个太累了,没有空闲时间。要么老公再努力一点,要么涨工资。综合来看,夫妻俩现在的实力不是很强,还是老公多出一份力比较好。妻子无需记住“单号单双号”,用APP录入顾客的订单,可以实现订单均衡分配给厨师。“这种模式是‘服务端负载均衡’”。对于软件架构,应用程序是一个负载平衡器。常用的软件负载均衡器有nginx、haproxy等,也有一些硬件负载均衡器性能更好,当然收费也“更好”。架构如下图所示:优缺点:“优点”是提高了应用的处理能力,可以处理更多的订单。“缺点”是增加了沟通成本。本来喊着解决的问题,现在需要app(负载均衡器)转发。远程服务调用和请求转发都很耗时。也就是说:餐厅(应用服务)现在可以处理请求的吞吐量,但是单个请求的处理速度反而下降了。其实这是服务拆分的结果。服务拆分是“以时间换空间”。女士们,先生们!4、饭后交流吃完烤串,我把上面的一套理论给了小娜,她很感兴趣:“软件架构真的离不开现实生活,到处都是活生生的例子。”我趁势吹嘘:“这就是你所在的地方,下次我带你去大酒店看世界,微服务的大酒店!”。欢迎关注我的博客,本文转载更多优质知识合集,注明出处(一定要有链接,不能只是文字):字母哥博客-zimug.com如果觉得对你有帮助,请点赞分享!您的支持是我创作不竭的动力!.另外,作者近期输出了以下优质内容,期待大家的关注。《kafka修炼之道》《手摸手教你学Spring Boot2.0》《Spring Security-JWT-OAuth2一本通》《实战前后端分离RBAC权限管理系统》《实战SpringCloud微服务从青铜到王者》
