对于微服务的一点思考

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

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

随着公司业务的发展,部门领导要求其中一个业务量比较大的要做负载。只给了一周的时间,包括开发和自测。因为时间比较紧,采用了最简单快捷的处理方式:缓存统一放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
版权归作者所有,转载请注明出处

原文地址:https://www.cnblogs.com/fishsky/p/10699980.html

时间: 2024-10-08 14:40:52

对于微服务的一点思考的相关文章

[服务器架构]微服务的深入思考

微服务有且仅有一种非常专项的功能,通过远程API来提供系统其余功能.举个例子:试想一下仓库的管理系统,这样的系统中微服务可能提供的一些功能有: 接收库存 计算新的库存该存到什么地方 计算在仓库内将库存运往正确放置点的路线 为仓库员工分配运送路线 接收订单 计算仓库内指定一组订单的拣货路线 为仓库员工分配拣货路线 以上这些功能(可能还会有更多)都是由单个微服务实现的.每个微服务都有单独的运行线程,并且可以独立于其他微服务进行部署.同样每个微服务都有自己的专用数据库,尽管每个微服务都会与其他微服务协

传统企业IT为什么对微服务叶公好龙的心态?(转)

这两年来,“微服务”.“云计算”.“大数据”.“人工智能”的概念在IT界成了新的宠儿:珠联壁合.声名远播.势如破竹.如日中天!从实践落地的情况来看:微服务诞生于互联网,当然是首先在互联网界遍地开花,高奏凯歌,所向披靡,到处布道.当传统企业刚遇到“微服务”,哇!这玩意真好啊,真是葵花宝典啊!业务隔离.独立部署.独立上线,高性能.高可用.弹性伸缩!我们公司要是也能实现这个该有多好啊!持续集成.持续部署,这不是我们整天喊整天吹的业务敏捷正需要的东东吗?然而在研究一翻之后,“洗洗睡吧!“ 抱着质疑的态度

微服务是什么?

解析微服务架构系列文章将分几篇描述微服务的定义.特点.应用场景.企业集成架构的演进以及微服务转型思路和技术决策考虑等内容,并以IBM技术为例介绍如何实现微服务架构转型. 为什么需要微服务架构 "微服务"架构是近期软件应用领域非常热门的概念.让我们先来看看传统IT架构面临的一些问题: 使用传统的整体式架构(Monolithic Architecture)应用开发系统,如CRM.ERP等大型应用,随着新需求的不断增加,企业更新和修复大型整体式应用变得越来越困难: 随着移动互联网的发展,企业

微服务架构(一):什么是微服务

解析微服务架构系列文章将分几篇描述微服务的定义.特点.应用场景.企业集成架构的演进以及微服务转型思路和技术决策考虑等内容,并以IBM技术为例介绍如何实现微服务架构转型. 为什么需要微服务架构 "微服务"架构是近期软件应用领域非常热门的概念.让我们先来看看传统IT架构面临的一些问题: 使用传统的整体式架构(Monolithic Architecture)应用开发系统,如CRM.ERP等大型应用,随着新需求的不断增加,企业更新和修复大型整体式应用变得越来越困难: 随着移动互联网的发展,企业

微服务的鉴定与思考

微服务有且仅有一种非常专项的功能,通过远程API来提供系统其余功能.举个例子:试想一下仓库的管理系统,这样的系统中微服务可能提供的一些功能有: 接收库存 计算新的库存该存到什么地方 计算在仓库内将库存运往正确放置点的路线 为仓库员工分配运送路线 接收订单 计算仓库内指定一组订单的拣货路线 为仓库员工分配拣货路线 以上这些功能(可能还会有更多)都是由单个微服务实现的.每个微服务都有单独的运行线程,并且可以独立于其他微服务进行部署.同样每个微服务都有自己的专用数据库,尽管每个微服务都会与其他微服务协

思考:实战 Spring Cloud 微服务架构下的“秒杀”(附源码)

内容概要 关于秒杀的更多思考,在原有的秒杀架构的基础上新增了新的实现方案 1.架构介绍 2.关于秒杀的场景特点分析 * 分析,在做秒杀系统的设计之初,一直在思考如何去设计这个秒杀系统,使之在现有的技术基础和认知范围内,能够做到最好:同时也能充分的利用公司现有的中间件来完成系统的实现. 我们都知道,正常去实现一个WEB端的秒杀系统,前端的处理和后端的处理一样重要:前端一般会做CDN,后端一般会做分布式部署,限流,性能优化等等一系列的操作,并完成一些网络的优化,比如IDC多线路(电信.联通.移动)的

从单体架构迁移到微服务,8个关键的思考、实践和经验

转载本文需注明出处:EAII企业架构创新研究院(微信号:eaworld),违者必究.如需加入微信群参与微课堂.架构设计与讨论直播请直接回复此公众号:“加群 姓名 公司 职位 微信号”.   随着微服务架构的持续火热,网络上针对微服务和单体架构的讨论也是越来越多.去年的时候,社区更多的关注点是在二者的区别以及优缺点辨析上,而今年,越来越多的人开始关注如何从单体架构迁移到微服务上.毋庸置疑,微服务的理念正在席卷整个开发者社区,像Netflix.Uber这样的公司都是非常成功的应用案例. 但需要注意的

微服务分布式事务的一些思考

关于微服务分布式事务的一些思考,笔者没有参与过复杂分布式事务的场景,各位大神路过可以分享一些遇到的案例,大家一起探讨. 关于分布式事务,笔者推荐的处理方法是"尽量避免",如果实在避免不了(这已经是高并发.用户量比较多的网站了)则使用"最终一致性"处理(参照CAP理论base思想),如果处理了事务,但还是遇到了数据错误,那还有最后一道保障,那就是"日志",可以通过日志找回数据,其实大部分互联网公司也都是这么做的.说到"尽量避免"

中台服务架构的一点思考

中台服务架构的思想是伴随着企业规模不断扩大.业务多元化而形成的.如阿里巴巴将集团20多个核心业务中公共的.通用的业务以服务的方式沉淀到了共享业务事业部,这套共享服务体系为阿里巴巴集团的核心业务赋能,真正发挥服务重用的价值. 说到中台服务就需要提及SOA (面向服务的架构).百科上关于SOA的介绍如下: SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台.操作系统和编程语言.这使得