持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,点击查看活动详情
前言
前面几期我们讲解了java的架构变化,上期讲了Spring Boot架构,得益于简单地配置就能使用,使得web开发的速度得到了质的飞跃,从springboot出来后更多的企业采用了敏捷开发,从需求到原型再到开发落地实施,所有的时间成本都被压缩在了2-3周完成。
架构变化
至此java的架构边停了下来发展没有那么快了,从我们前几期讲的到springboot我们都称为是单体架构,但是随着网站的不断使用,越来越多的用户,越来越多的并发,以及越来越多的业务使得这个单体架构变成一个大石头,最终成为巨石,所有的业务糅杂在一起,它会带来两个危害
- 开发者不想维护代码
- 服务器承受不住大量用户冲击
由于这些危害太过致命,所以如果在早期使用jsp或ssm等架构实现集群架构会有些困难,回到开头简单地springboot为我们提供了开箱即用的能力,所以我们集群搭建方式也选择的更多了,spring boot首先引入了新的架构是Martin Fowler(马丁·福勒)提出的微服务架构论文,提出了服务拆分的想法,使得java进入到了新时代。
新时代架构
java服务进行拆分后总需要一个东西去把请求与配置文件聚合以及服务管理,查看每个服务的心跳状态,于是出现了服务中心早期的eureka 与 dubbo 与 nacos三者都是服务中心代表,目前以nacos方便简单使用在开发者当中最后欢迎。
那么服务聚合问题解决了,接口请求这么多服务落在谁身上呢?所以对应解决方案就是gateway、zuul等路由网关来实现流量分发。
服务间如果需要通信呢?别担心也有解决办法,使用feign来解决服务间调用问题,feign我有些文章可以跳转主页查看。
那某一服务流量过高怎么办?那就使用ribbon来改变服务器的轮询规则,使用Hystrix来解决高流量请求捕获。Hystrix如果察觉到流量过高或者调用出现异常,则会立即捕获到并提醒开发者。