1。SpringCloud技术栈开发分布式系统可能具有挑战性,复杂性已从应用层转移到网络层,并且需要更多服务之间的交互。让你的代码“云原生”需要解决12个因素的问题,例如外部配置、服务无状态、日志记录和连接到备份服务。SpringCloud项目套件包括让您的应用程序在云端运行所需的许多服务。12-factor(云原生应用12要素):SpringCloud架构:1.1SpringCloud技术栈SpringCloud技术栈非常丰富,这也是SpringCloud在微服务领域大受欢迎的原因之一。技术栈如上图所示。注册配置、服务调用、微服务网关、消息组件、链接跟踪、配置中心、安全控制、限流等诸多方面的技术栈都比较完善,阿里巴巴也发布了一套SpringCloud阿里巴巴版本,主要是集成了阿里巴巴的主流技术栈。1.2SpringCloud经典技术介绍微服务项目近几年很火,相关的技术方案也很活跃。不过,SpringCloud技术栈中的一些技术组件正在逐渐被淘汰或闭源,但还有更好的技术。方案备选方案。在不久的将来,那些闭源或者淘汰的技术大概率不会在项目中使用,所以我们在研究的时候可以直接学习更好的替代技术方案。Eureka闭源:以上英文大概意思是:Eureka2.0的开源工作已经停止,依赖开源库中Eureka2.x分支的项目或相关代码风险自负。Eureka在微服务项目中主要负责服务注册和发现。有很多替代的技术方案,很多方案比Eureka更好,比如Consul和Nacos。Hystrix停止更新:Hystrix在项目中主要做服务熔断和降级,但是官方公告是不会开发,目前处于维护状态,不过官方说1.5.18版本的Hystrix是稳定的足以满足Netflix现有应用的需求。网约车业务如上图所示:1:打车的时候会选择车型。选择车型时,我们调用流程:Gateway->Driver(载入司机列表)2:选择车型后,确认出租车,相当于下单。->Order(下单)->Driver(司机状态改变)3:打车结束后,用户进入支付流程,调用流程为:Gateway->Pay(支付)->Driver(更新司机状态)->Order(更新订单状态)2.SpringCloudConsul我们知道Eureka2.X遇到了困难停止了开发,所以我们需要寻找其他的替代技术来替代Eureka。在本节中,我们将解释一个新组件Consul。2.1Consul简介Consul是HashiCorp推出的开源工具,用于实现分布式系统的服务发现和配置。与其他分布式服务注册与发现方案相比,Consul的方案更加“一站式”,内置服务注册与发现框架、分布式一致性协议实现、健康检查、Key/Value存储、多数据中心解决方案.需要依赖其他工具(如ZooKeeper等)。使用起来也比较简单。Consul是用Go语言写成的,所以有天然的可移植性(支持Linux、windows、MacOSX);安装包只有一个可执行文件,易于部署,可与Docker等轻量级容器无缝对接。2:Consul收到Producer的注册后,会每隔10s(默认)向Producer发送一次健康检查请求,检查Producer是否健康。3:当Consumer以Http的形式向Producer发起请求时,会先从Consul获取一张存储服务IP和Port的临时表,然后从Consul获取到Producer的IP和Port后发送请求桌子。4:临时表每10s更新一次,只包含通过健康检查的Producers。2.2Consul的安装Consul与Eureka不同,需要单独安装。访问Consul官网下载最新版本的Consul。最新版本是1.9.0,我们使用consul_1.9.0_windows_amd64版本。下载下载地址:https://www.consul.io/downloa...;如何在linux上下载可以点击相应的tab查看。历史版本下载地址:https://releases.hashicorp.co...下载的文件是consul_1.9.0_windows_amd64.zip,我们解压这个文件,里面有一个文件consul.exe,我们添加文件所在的目录位于环境变量路径。安装和启动1.用consulserver运行,参考如下命令:consulagent-server-bootstrap-expect1-data-dir/root/consul/data-node=n1-ui-client=0.0.0.0-bind=192.168.200.129-server定义在服务器模式下运行的代理-bootstrap-expect1数据中心预期提供的服务器节点数。当提供这个值时,consul会等到指定的server数量达到后再引导整个集群。service-name:${spring.application.name}#注册服务实例Id,最好不要重复,这里是官网建议的随机数的方法default:applicationname:port#instance-id:${spring.application.name}:${vcap.application.instance_id:${spring.application.instance_id:${random.value}}}#自定义实例id为:applicationname:ip:portinstance-id:${春天。application.name}:${spring.cloud.client.ip-address}:${server.port}prefer-ip-address:true#开启服务注册register:true#开启服务发现enabled:true#2分钟后健康检查取消注册失败health-check-critical-timeout:2m#consul健康检查轮询周期health-check-interval:10s4)Consul服务数据转载请注明出处!如果本文对您有帮助,请关注并点赞;有什么建议也可以留言或私信。您的支持是我坚持创作的动力
