单体服务和微服务的区别

单体架构的不足

1 便于开发,易于测试,易于部署,无法非模块,无法扩展,无法独立升级,io模块和cpu模块,可靠性差,小的模块内存泄露,大的bug,统一框架和语言,变更成本高,无法引入新的语言,代码修改,扩展麻烦,测试麻烦,可靠性,

2 复杂性,代码混乱,维护麻烦,交互效率低,编译,调试耗时间,容易冲突,bug难找,风险大,发布的频次低,版本更新慢,

微服务架构

1 解决非功能架构,高内聚,低耦合,不同放入语言和存储,

2 优势:易于开发和维护,启动和调试速度快,提高开发效率,独立部署,晚上访问量大,微服务的修改不需要协调其他的服务,减少沟通成本,代码到服务边界的影响,便于横向扩展和扩容,独立扩容,拆分小服务,系统级别的扩展,不同的团队维护,减少沟通的成本,不同的团队各司其职,独立负责某些服务,较少技术的,不同的技术,go,ES,redis,尝试新的技术变得容易,新的模块尝试新的技术,

3 api网关:身份验证,动态路由请求,数据的聚合,

微服务的挑战

1 服务的需要自己的额数据库,部署在共享的数据服务器,修改配置,自己的业务能力,了解自己的产品和业务,才能划分边界,高内聚和低耦合,

2 服务拆分:领域模型,组织架构,单一职责,事务的一致性,是咧在不同的服务器,事务的处理,分布式事务,延时性高,消息队列,事务操作尽量防止统一服务器,服务通信:分布式架构,协议?rbc,restapi负载?

http:学习门槛低,夸语言,便于调试,缺点:协议繁琐,文档不好维护,性能差,

rpc:基于tcp协议,dubbo等,rbc:代码提示,协议维护在代码里面,缺点:很多的rbc不支持夸语言,

服务注册表:端口,服务的名字,zk;负载均衡,

3 服务网关:身份验证,代码的复用性,流程控制,内网和外网的边界,日志统计,安全防御,,业务专注业务!!!服务网关不应该有过多的业务逻辑,高可观察,监控指标聚合输出到图表输出,分布式追踪,输入和输出,一个请求长,追踪!!!服务的依赖关系,服务降级:不可用,缓存展示或者其他,接口幂等性,

最佳实践

1 代码的脚手架,统一,搭建代码,

2 独立的数据库,降低耦合,共享库不应该包含业务,

soa和微服务

1 技术站不同,soa:共享的数据库,力度比较粗,多个单体的组合,微服务:独立的数据库,力度更小的服务,

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值