有了springboot为什么还需要springcloud

        最近在学习把传统系统改造为微服务的结构,了解了一下springboot和springcloud。招聘中接触到的应聘者也有不少人使用过这两个框架。问到springcloud,基本都能说出其包含服务注册、发现、熔断等功能。但如果我问为什么需要springcloud的时候,都用其包含的功能来搪塞,跟我一样的迷糊。所以,我决定动动手,去找到我想要的答案。
        我挑选了一个以前做过的功能模块,大致业务流程为获取一个需要定位的号码,定位,定位结果记录,有位置判断是否突破电子围栏且没有请假,如果是发送短信通知管理人。
        首先要做的是服务拆分。初步分为7个服务:定位调度服务,获取需要定位号码的服务,根据号码定位的服务,位置是否突破围栏的服务,是否请假的服务,获取通知对象电话的服务,发送短信的服务。
接着就是分别安装划分定义了接口并实现了服务。每一个服务都有一个默认端口,分别从8081到了8087。
然后回头一看,发现定位调度服务会调用获取号码服务和定位服务。我需要在定位调度服务中写这两个服务的地址。如果是开发环境也就罢了,但但生产环境中,定位服务我可能会部署多个节点一起服务。那我这样简单的写法只能调用到一个具体的服务实例。
        到这里,我把nginx拿进来,给定位服务组定义了一个路径,背后配置了多个节点,让定位调度服务调用nginx中配置的定位服务组路径。是通过请求的路径不同去导向真实服务。看上去,我的需求解决了。以后有新的服务,我都来nginx配置一个服务组路径。如果服务压力过大,需要横向扩展,我就启动几个服务实例,手工修改nginx中对应服务组的配置,把新启动的服务实例作为节点添加进去。我看过nginx官方资料,并且设计案例测试过reload是不会丢失请求的。nginx配置负载均衡,节点健康检查也具备。这样一来,我最初设计的低耦合,可横向扩展,在线无感更新等要求基本满足。
麻烦的是每次新服务开发后要去手工配置,服务新实例启动后需要手工配置。
        至此,我基本知道为什么需要springcloud了。一个服务编写好后,一启动就会自动注册到服务中心,调用方只管向服务中心发送服务的名称和参数,根本不关注服务的路径。springboot就是做服务的工具,springcloud是管理服务运行的工具。

        我还需要验证的是springcloud服务实例新增与卸载是否可以用户无感。

                                           ----清晨的地铁 静悄悄    手机编写 文字太多请原谅

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值