模拟springcloud微服务调用
程序员文章站
2022-04-30 11:32:04
...
分布式服务框架目前市面上用的最多的估计就是上面两个框架,dubbo与springcloud
关于这两个框架的对比 我个人跟认为 dubbo是远程服务调用框架 springcloud更是微服务框架 从性能上来说 dubbo性能更好 但是本身的功能有限 springcloud 是提供了一整套微服务的框架 除了远程服务调用 还有网关 调用链追踪 配置中心等 并且 springcloud提供的外部服务主推http接口 这样可以对内提供服务的同时 这个接口还能对外提供服务 但是其序列化中 主要依靠http报文的转换 并不像dubbo使用byte数组进行序列化 并且 在传输的框架上 dubbo使用netty 进行传输 异步非阻塞io 虽然现在 servlet3.1也支持 但是 要依靠外部的容器升级 与 webflux 的配合 但是在两者使用上 我觉得 springcloud是真的舒服
下面 我参考 springcloud模拟了一个微服务rpc调用框架 其中使用zookeeper 临时节点作为注册发现的功能,网络间传输
原理:
提供者启动后 会降自身的ip与端口 注册到zookeeper列表 并且 将自身的url写到节点的数据中去
消费者 监听这个节点 并 事实改变节点列表内的数据
下面是源码地址
模拟springcloud服务调用源码
启动方式
配置好zookeeper地址
消费者:
提供者:
启动后 在提供者未启动的情况下调用 会抛出异常 这里 可以 作为降级 模拟
服务提供者未启动效果
当启动多个服务提供者效果:
我这里 启动了两个提供者 分别是不同的端口 每次 调用都会轮训的切换节点调用
ps:本代码仅供学习交流使用
推荐阅读