发表:2022-09-13 21:12:10 浏览数:
来源:作者:
微服务架构可以理解为一种架构风格,将一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
对于微服务架构来说,他们更专注于对于系统应用和业务的解耦,可以达到快速开发,快速迭代的目的,而ESB则是专注将各个系统之间服务集成和转换,强调的是系统间的强强关联,看上去和微服务的理念是相冲突的,在同一环境下只能存在一个。但实际情况并不是这样的。
1. 微服务架构虽然优势很多,但是还处在一个发展过程,虽然目前很多的产品都在慢慢转型,但是还是需要时间,对于相对复杂的业务,并不能完全实现,而ESB能够做的,更多的是协助业务系统进行服务的转换,服务的开发,弥补业务系统当前环境下的不足,满足业务场景的快速对接和实现,相比理想化的结果,利用现有资源,更能进行快速的反应和实现。
2. 虽然微服务架构能够实现快速的开发和迭代,但是随着业务的复杂,系统的增多,对接难度也会变大,小改动可能变动一方改动,大改动双方都要改动,成本和周期都是需要衡量的,而ESB虽然前期投入很高,但是从长远来看,成本和开发周期都是最低的,对于客户来说,也是更容易接受的。
3. 让一个企业所有的业务系统都能支持微服务的开发是不可能的,相对于版本较低的产品,可能都不支持开发,有可能服务都没有,这种情况下,更多的是做好IT资产的复用和兼容,微服务和ESB相结合的方式,只有这样,才能获取更多的市场,满足更多业务场景的快速实现。
数通畅联专注于企业IT架构、SOA综合集成、数据治理分析领域,感谢您的阅读与关注
很高兴回答您的问题。
目前我们在做的一个项目全面使用微服务架构。也确实从中获得了极大的便利。
首先,确定模块的划分,就我们的项目而言,分为:
1. 前端模块,对外提供REST API接口
2.负责具体逻辑处理的模块,前端模块和此模块通过GRPC通信
3.异步处理模块,有些任务耗时较长,模块二会发送一个消息到kafka,此模块从kafka获取消息,进行异步处理
系统部署在kubernetes之上,所有模块编译成docker image,上传到自己私有的image repo。
每个模块都有多个副本,以实现负载均衡。模块之间的通信,通过kubernetes cluster service实现。
kubernetes ingress负责对外提供访问接口以及ssl的处理。
外层再使用load balancer,以实现在多个cluster之间负载均衡以及容错。多个cluster部署在不同的region,以避免区域出现问题使服务不可用。
cluster里面还使用了istio,以便利用service mesh。
此外监控也是必不可少的,我们使用prometheus来监控各项指标,alertmanager实现报警。
ELK实现对日志的记录与查询,jaeger实现模块间同一个request的trace。
目前稳定运行,效果非常不错。
希望我的回答对您能有帮助。
事实上,很多系统根本就没必要用什么所谓微服务。目前过度设计已经泛滥,明明是一个用户数量有限,功能并不复杂的系统,也要套用所谓的微服务架构,或者要大搞所谓中台,既浪费时间,又浪费金钱,最后系统运维还比较复杂,需要持续投入运维。
以服务调用的方式,固然可以有更好的复用性,也可以解耦复杂系统。但实际上,我认为微服务也仅仅是组件化的一种实现方式。对于组件化,广义的讲,有多种实现方式:
第一种,最原始的方式就是以静态函数库或者包的形式存在。这种形式优点是开发方式简单,调用效率高,数据以参数方式进行传递,但耦合度也高,底层组件函数一旦发生变化,则需要重新编译整个工程。通常对于不经常发生变化的基础函数库,可以用这种形式进行开发,形成所谓的公共函数库,供大家使用。
第二种,称之为动态函数库,在windows环境下以dll形式存在,linux环境下以so形式存在。动态函数库相对于静态函数库,优势在于可以在运行时动态加载,可以在不用重新启动整个应用的情况下进行更新。缺点是动态函数不能共享原应用程序的存储空间,导致动态函数调用有时需要传递大量参数,导致一些不便。动态函数库也具有一定耦合度,函数名和参数必须严格按照约定调用,否则会报错。在早期单体架构下,动态函数库还是有大量使用的。
第三种,就是目前所谓的微服务架构了。微服务事实上也是可以看作是一种函数调用方式,提供基于RPC和restful远程调用方式。调用时需要传递调用的服务名称及数据报文。这种方式耦合度自然是比较低一些的,但是调用效率肯定低于函数调用方式,主要是数据传输和报文解析方面消耗的时间。此外还需要考虑通讯流量控制,超时机制,服务寻址,服务可用性等方面的问题。因而降低耦合度,事实上是以增加了系统的整体复杂度和降低调用效率为代价的。个人认为不应该过度解耦,或者仅仅强调可复用性。要知道,任何事情都是有代价的,必须要充分评估这种代价是否值得。
第四种,就更进一步,即以独立的系统存在,该系统具有独立性和完备性,可以不过于依赖其他外部系统独立运行,对外部以服务或api的形式进行交互。例如,单点登录系统,信贷系统,核心系统等。
因而,在系统架构设计和建设过程中,必须认真进行评估,不应该过分侧重于某一方面特性的实现,否则就是过犹不及,最后导致整体出现问题。
个人认为,目前大部分所谓基于微服务的中台系统就是陷入了过于强调解耦的误区,导致过度的解耦设计,而忽略了由此带来的弊端,最后陷入了泥潭。
1.定义:
明确下RPC是什么?PRC全称是Remote Procedure Call,是进程间的一种通信方式。
2.解决的问题
进程间调用就像本地调用函数一样简单,而业务层不需要去关心通信的细。
3.组成
在Nelson的论文Implementing Remote Procedurr Calls有论述,见图1
User 调用方
User-Stub 消息拼装,编解码
RPCRuntime 发送,接受消息
Service-Stub 消息拼装,编解码
Server 服务方
4.核心实现
从图中可以看出我们需要实现Stub和RPCRuntime的功能。
Stub:主要功能是消息格式怎么定义和编解码。
消息格式:一般需要设计消息头和消息体,当然越简洁越好,提高传输效率
编解码:二进制最高效,可以使用Protocol Buffers,Thrift。当然也可以使用可读性比较好的JSON,XML。
RPCRuntime主要负责通信,这里涉及到选择什么IO模型,BIO,NIO还是AIO,可以使用netty来实现NIO功能。
5.开源实现
了解开源实现,更能促进自研的成熟稳定。当然看需求是否需要自研,一般开源就可以满足需求了。
比较好的开源实现有Dubbo,brpc,grpc,Thrift,Hessian等
6.小结
虽然RPC说起来只是进程间的通信,但是RPC服务怎么注册,发现,路由这些都还是需要考虑的。再者毕竟是网络传输,就有可能出现延迟,丢包的情况,容错性也需要多考虑考虑。这里再把RPC调用描述的全一点,见图2。图中的clinet,sever只和agent交互,agent就包含了Stub和RPCRuntime的功能,一般这里的agent实现为一个jar包,和应用程序部署在一起。
现在Service Mesh也越来越成熟了,Service Mesh把agent独立为一个进程部署(必须和业务同一机器),这样降低了耦合性,同时业务和平台独立,开发迭代速度也更快。提到Service Mesh的开源实现必提Istio。图3是Istio官网的架构图。
希望回答对你有帮助,记得点个赞哦,谢谢。也可以关注我,后面会分享一些架构的知识。
易贝滴眼液和贝复舒眼用凝胶一起用(贝复舒眼用凝胶冷冻后能用吗...
本文目录贝复舒眼用凝胶冷冻后能用吗贝复舒凝胶的作用贝复舒眼用凝胶冷冻后能用吗贝复舒眼用凝胶冷冻后可能会影响到药物的效果,如果用于干眼症或严重
Sary作为沙特B2B电商领头羊,在沙特电商行业的B2B市场份额中占80%。此次收购埃及同行Mowarrid,意味着Sary向北非市场的首次扩张,接下来Mowarrid也将作为Sary埃及站点开放。埃及是非洲第二大经济体,也是阿拉伯世界...
本文目录鬼吹灯 Shirley杨怎么读Shirley中文怎么读shirley怎么念这些英文名怎么读Judy赞美Doris海洋女神名,属于大海
体验式购物和比价购物哪个才是趋势?你们网购一般在哪里,有优惠...
有优惠吗欢迎来交流汽车充气泵哪个牌子好体验式购物和比价购物哪个才是趋势购物,所以说在淘宝上购物也不是很积极主动,购物会有比价,本文目录体验式
本文目录弈航李宁工厂店是正品吗商场李宁工厂折扣店里的鞋子是真货么广州新塘有没有李宁工厂店济南李宁工厂店有哪些具体地址,谢谢李宁超级工厂店怎么
惠氏铂臻莹萃有机奶粉(有机奶粉和普通奶粉的区别大吗有机奶粉哪...
本文目录有机奶粉和普通奶粉的区别大吗有机奶粉哪款更值得推荐6个月宝宝喝惠氏启赋蕴萃有机奶粉怎么样铂臻奶粉怎么样对宝宝健康好吗惠氏铂臻奶粉港版
跨境电商还值不值得做跨境通能摘帽吗跨境电商未来的前景如何2021年跨境电商有前途吗2020年,很多人都通过跨境电商获得了利润,但是如果在跨境
爱淘金为什么没有签到了(保险公司做保险业务员,几个月没开单了...
本文目录保险公司做保险业务员,几个月没开单了,是不是应该辞职了网络成了诈骗犯的法外之地,为何抓捕困难为什么大学老师总是爱整一些所谓的平时分,
本文目录这段时间关注朴槿惠的人为何突然猛增为什么日本解散了财阀,韩国却不能腾讯的势力到底有多大,为什么说腾讯是中国版的超级财阀这段时间关注朴
nursery卸妆膏(贝德玛卸妆水卸的干净吗还有什么好用的卸妆产品...
本文目录贝德玛卸妆水卸的干净吗还有什么好用的卸妆产品推荐吗有什么好用的卸妆膏可以推荐本人干皮,只涂防晒,用的是安耐晒金瓶,求能卸干净又不拔干
国内cfa最好的十大培训机构(中国最好的金融培训机构是哪家)
本文目录中国最好的金融培训机构是哪家国内哪家CFA辅导机构好,金程教育业内好像挺知名的CFA考的人多吗,哪家辅导机构最出名找金程辅导CFA,
离岸公司注册代理在哪个网站发布信息(你们注册离岸公司会找哪家...
本文目录你们注册离岸公司会找哪家代理公司帮忙会比较好我想注册离岸公司,可不知道该在哪里注册请大家推荐下想开设离岸账号接受美金,推荐一家正规的
facebook message apk(台湾、香港和澳门的人平时聊天都用微信吗...
本文目录台湾、香港和澳门的人平时聊天都用微信吗外贸人应该如何利用碎片化时间有效吸引客户询盘中国大部分人都玩微信,外国人玩什么通过什么方式交流