对于微服务的一点思考

fishsky fishsky     2023-03-14     367

关键词:

公司说我们的开发方式是敏捷开发,实际上只是使用了一些敏捷开发的方法,只有遵守敏捷开发的价值观和原则,才能算是敏捷开发。微服务也是一样,不是说拆分成多个服务去部署,就叫做微服务。也不是采用市面上常用的微服务框架,就是微服务了。

上面这段话是我对微服务的简单理解。

随着公司业务的发展,部门领导要求其中一个业务量比较大的要做负载。只给了一周的时间,包括开发和自测。因为时间比较紧,采用了最简单快捷的处理方式:缓存统一放Redis,起了一个辅助项目来做公共和定时器等方面的处理。

此种方式基本把压力推到了Redis中,包括缓存的读取、序列化等工作,基本上运行正常。突然有一次发版,因一些原因,停掉了其中一台服务(详见https://www.cnblogs.com/fishsky/p/10593233.html),导致在业务高峰期出现了请求超时(数据加载不出来的情况)。

重启开启另外一台负载后 ,运行正常。过了两天,又出现部分请求超时的情况。定位看到,其中一台负载遇到了瓶颈,追查原因是haproxy采用的source的负载规则(以请求源IP为判断,转发到一台服务器后,后面只会到那台机子上)。为了避免再次出现情况,部署多了一台机子,即共3台,进行负载,采用的是balance roundrobin (轮询),基本稳定下来。

此时,运维方面提出了采用Dubbo+zookeeper+RabbitMQ+SpringMVC/Springboot(分布式服务架构)来提升系统的可靠性和稳定性。

对于此方案,初衷是好的。不过要实现落地,达到公司系统架构的调整,直接引入这套架构,并不是最好的选择。投入的成本较高。如果不采用微服务(或者分布式服务架构)能否解决现在的问题,答案是肯定的。

好像有点偏离主题了,按现在我们就假设现在是引入微服务来解决出现的问题。

首先要解决的问题就是把目前的系统做分解(拆分),做到服务之间不相互调用、不用花大力气解决各个服务之间的数据一致性问题。

这个也是微服务的真正难点(并非在于技术实现,而是业务的划分),做到微服务的第一步是识别限界上下文。

对业务的划分,目前有一套从系统分析到软件建模的方法论:领域驱动设计。它要解决的问题是:将业务概念和业务规则转换成软件系统中概念和规则,从而降低或隐藏业务复杂性,使系统具有更好的扩展性,以应对复杂多变的显示业务问题。

想做微服务架构,首先是不要使用微服务。如果将一个整体服务贸然做成微服务,引入的复杂度会吞噬掉你以为的优势。

可以采用,让不同的限界上下文先各自独立演化,等到它演化到值得独立部署了,再来考虑微服务拆分的事情。那时各种微服务(分布式服务)的技术,才是真正上场的时候。

作者:鱼天翱
出处:https://www.cnblogs.com/fishsky
版权归作者所有,转载请注明出处

对于函数名本质的一点思考

自己在学习函数指针的时候对函数名的意义产生了一点疑惑,经过一些尝试和思考,感觉应该可以像下面这样理解,如果有啥不对的希望大家指正。首先我们对变量名的定义做一下回顾:在C语言里面,我们声明一个变量的时候... 查看详情

中小型公司对于springcloud的选择与思考

在开始之前我们先介绍一下几个概念,什么是微服务,它的特点是什么?SpringCloud都做了那些事情?他们之间又有什么联系?技术背景什么是微服务微服务的概念源于2014年3月MartinFowler所写的一篇文章“Microservices”。微服务架构是... 查看详情

中台服务架构的一点思考

 中台服务架构的思想是伴随着企业规模不断扩大、业务多元化而形成的。如阿里巴巴将集团20多个核心业务中公共的、通用的业务以服务的方式沉淀到了共享业务事业部,这套共享服务体系为阿里巴巴集团的核心业务赋能,... 查看详情

设计表的时候,对于自增列做逻辑主键使用的一点思考

 本文出处:http://www.cnblogs.com/wy123/p/7581380.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他)  关于自增列自增列作... 查看详情

设计表的时候,对变长字段长度选择的一点思考(代码片段)

...MySQL或者Oracle,变长字段的长度衡量都是要经常面对的。对于一个变长的字段,在满足业务的情况下(其实所谓的满足业务是一个比较模糊的东西),到底是选择varchar(50)还是varchar(200)亦或是varchar(500)?对于保守型选择,往往是... 查看详情

对邮件服务器的一点思考(代码片段)

正常发送邮件我们一般使用SMTP服务器帮我们代发邮件。例如我申请了一个163邮箱,我会通过客户端,使用用户名和密码登录163的SMTP服务器,帮我代发邮件到QQ邮箱或者其它邮箱。这个时候我们是需要有用户名和密码... 查看详情

对邮件服务器的一点思考(代码片段)

正常发送邮件我们一般使用SMTP服务器帮我们代发邮件。例如我申请了一个163邮箱,我会通过客户端,使用用户名和密码登录163的SMTP服务器,帮我代发邮件到QQ邮箱或者其它邮箱。这个时候我们是需要有用户名和密码... 查看详情

对“机器视觉”的一点思考

...现实也是根本不可能的,所以人的视网膜精度是有限的,对于远处的事物如果不走近看根本看不清,如果要1:1呈现现实世界,则需要非常长的焦距,这只有借助于人工建造的 查看详情

关于后台系统自动生成的一点思考

...如何能高效的节约这些时间呢,那就是接下来我要说的,对于后台系统自动生成的一些思考。适用情景:  1、表编号id为自增(基于现在大部分表编号都是自增的情况);  2、没有太复杂业务关联关系,比如表的某一个字... 查看详情

关于后台系统自动生成的一点思考

...如何能高效的节约这些时间呢,那就是接下来我要说的,对于后台系统自动生成的一些思考。适用情景:  1、表编号id为自增(基于现在大部分表编号都是自增的情况);  2、没有太复杂业务关联关系,比如表的某一个字... 查看详情

关于后台系统自动生成的一点思考

...如何能高效的节约这些时间呢,那就是接下来我要说的,对于后台系统自动生成的一些思考。适用情景:  1、表编号id为自增(基于现在大部分表编号都是自增的情况);  2、没有太复杂业务关联关系,比如表的某一个字... 查看详情

[转]一个it老总对于新人的一点建议

1.一定要有独立的人格、独立的思想。一个经过独立思考而坚持错误观点的人比一个不假思索而接受正确观点的人更值得肯定。不要成为灌输教育的牺牲品。2.在进行职业生涯规划的时候,不妨以此作为思考的出发点。根据不同... 查看详情

工作中上的一点思考

防御式编程,不要相信任何人和服务。你要做好对自身的保护,号称4个9的AWS不也宕机了吗!你所担心的事一定会发生,而且可能马上会发生。最近上了一些功能,你说好像这个地方可能会有问题,你最好赶紧看,也许马上就会... 查看详情

周志华:关于机器学习的一点思考

周志华:关于机器学习的一点思考 https://mp.weixin.qq.com/s/sEZM_o5D6AhyMgvocbsFhw  演讲:周志华整理:肖琴、闻菲【新智元导读】机器学习如今大获成功的原因有哪些?如何才能取得进一步的突破?南京大学周志华教授在AIWOR... 查看详情

关于重构工作的一点思考

...重构方案,到具体执行的过程中遇到的问题,以及对重构的一点理性思考。起因:  本系统是2015年11月开始建设,当时为了快速投入使用,大量的烂代码,后期一直保持快速前进,没有进行过实质性的重构。具体表现:●分层... 查看详情

ue4关于创建动态结构体的一点思考(代码片段)

前言:这大半年其实没有怎么更新博客,对于自己的博客其实大部分都是一些基础教学性质的文章,真正探索性质和比较深入的内容其实很多都并没有发表出来,我想以后单独出些教学视频或资料和大家交流这篇... 查看详情

restful的一点思考

1、首先我觉得这就是一个规范,就像是定义变量用驼峰法这样的规范一样,我不用驼峰法定义变量一样可以实现啊,这个我觉得没什么好纠结。都是程序猿,就不要自相伤害了,让世界和谐一点好不好。2、使用RESTful定义的api,... 查看详情

关于androidapp架构的一点思考

...要进行架构设计?对程序进行架构设计的原因,对于大企业归根到底是为了提高生产力。通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合。这样做的好处是使得程序在开发的过程中,开发人员... 查看详情