现在不管是什么项目,介绍的时候,不带点SOA,微服务,分布式,集群这样的名词,都不好意思开口。
那今天就正经点的说说这样的服务中,一般要具备哪些要素,以及具体的实现有哪些。
今天就介绍工作中常用的三种:dubbo,springcloud,spingcloudalibaba。后期要是有空,会看下蚂蚁金服的sofa-rpc框架。
dubbo:一种是阿里在维护的版本,另一种是apache在维护的版本。
dubbo在停了一段时间后,阿里重新捡起来维护,并贡献给了apache。今天对比的是阿里维护的版本。
springCloud:之前面试被各家面试官吹上天的spring全家桶,号称社区非常活跃。
springcloud不是什么框架,应该是一种生态。它提供了基于netfix的各种插件。使用起来也很简单。But,不幸的是,2018年12月12日,双12那天,netfix宣布,这个全家桶套件,全部进入维护期,不会再进行新功能的开发,加入(不知道之前那些吹捧springcloud永不凋落的各位面试官心理什么感受)。希望netfix能像阿里一样,后期继续捡起来,给我们开发者提供一些牛B的开发支持。
springCloudAlibaba:看名字就知道是阿里爸爸开源的项目,也是一套生态。其中替换了一些阿里自研的项目,比如注册中心,配置中心等。根据官网介绍,替换的这些套件,很多都是阿里多年双11大促积累的宝贵经验。
下面按照表格的方式罗列一下系统中具备的要素,以及各家提供的解决方案:
功能: | dubbo | springcloud | springcloudalibaba | 其他 | 我用过的 |
---|---|---|---|---|---|
RPC具体实现 | 基于TCP调用的rpc调用 | 基于http调用的RPC调用 | 基于http调用的RPC调用 |
dubbo的TCP方式RPC springcloudd的http方法roc | |
网关 | 无 | zuul | getaway | zuul,gateway | |
负载均衡 |
① Random LoadBalance(随机均衡算法) ② RoundRobin LoadBalance(权重轮询均衡算法) ③ LeastAction LoadBalance(最少活跃调用数均衡算法) ④ ConsistentHash LoadBalance(一致性Hash均衡算法) 缺省时为Random随机调用 | robbin/feign | robbin/feign | nginx |
robbin/feign,ngnix dubbo提供的负载均衡 |
熔断/限流/服务降级 | hystrix | sentienl,hystrix | hystrix,sentienl | ||
监控/监控UI | skywalking | skywalking | |||
配置中心 | zookeeper、xdiamond | config | nacos | apollo |
xdiamond zookeeper,nacos,apollo |
注册中心 | zookeeper | eureka | nacos | zookeeper,eureka,nacos | |
分布式事务 | 基于补偿的方式实现 | ||||
MQ | rabbitMq,kafka | ||||
数据库中间件 | canal | canal | |||
服务管理平台 | dubboAdmin | nacos | dubboAdmin,nacos | ||
数据库UI |
phpMyAdmin Yearning 介绍(SQL审核平台) | ||||
搜索引擎 | elasticsearch | ||||
缓存 | redis ecache | ||||
权限验证 | shiro,spring Security | ||||
接口API提供方式 |
swagger apidoc | ||||
分布式定时任务 |
elasticJob XXL-Job | ||||
自动化运维 |
jekins docker k8s | ||||
分布式锁 |
基于redis的锁 基于数据库的锁 基于zookeeper的锁 |
后面的章节会根据要素独立,一项一项的记录一下实现的原理和使用方法。