Springcloud
Springcloud 资源
江南一点雨 Spring Cloud系列
https://blog.csdn.net/u012702547/column/info/17373
小团队的微服务之路
https://mp.weixin.qq.com/s/FhShr3NCeBSbfl_EKLeoHQ
微服务介绍
http://baijiahao.baidu.com/s?id=1600354904549354089&wfr=spider&for=pc
参考资料
八年阿里架构师怎样讲述Dubbo和Spring Cloud微服务架构
http://www.spring4all.com/article/1815
springcloud(一):大话Spring Cloud
http://www.ityouknow.com/springcloud/2017/05/01/simple-springcloud.html
Springcloud dalston 中文文档
https://springcloud.cc/spring-cloud-dalston.html
解决这几个问题
1. 什么是SpringCloud
2. 有什么作用
3. 如何开始
什么是SpringCloud
它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
https://baike.baidu.com/item/spring%20cloud/20269825?fr=aladdin
Spring Cloud一站式解决方案能在从容应对业务发展的同时大大减少开发成本
Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色。对于我们想快速实践微服务的开发者来说,第一类子项目就已经足够使用,
- Spring Cloud Netflix
是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。
- Spring Cloud Config
将配置信息中央化保存, 配置Spring Cloud Bus可以实现动态修改配置文件
- Spring Cloud Bus
分布式消息队列,是对Kafka, MQ的封装
- Spring Cloud Security
对Spring Security的封装,并能配合Netflix使用
- Spring Cloud Zookeeper
对Zookeeper的封装,使之能配置其它Spring Cloud的子项目使用
- Spring Cloud Eureka
Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能。
展示项目
awesome-spring-cloud
https://gitee.com/ityouknow/awesome-spring-cloud
SpringCloud示例项目
https://github.com/ityouknow/spring-cloud-examples
基于Spring Cloud的在线考试系统
https://gitee.com/wells2333/spring-cloud-online-exam
jeeSpringCloud
https://gitee.com/JeeHuangBingGui/jeeSpringCloud
Spring Cloud + Vue 项目实战,模拟商城+后端运营平台,值的学习
https://github.com/paascloud/paascloud-master
基于Spring Cloud、oAuth2.0开发基于Vue前后分离的开发平台
基于Spring Cloud的在线考试系统 剖析
https://gitee.com/wells2333/spring-cloud-online-exam
服务器注册中心
eureka
serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。
启动后的访问地址:
Eureka通过互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署。
Cloud-Platform启动指南
rabbitmq 介绍及安装
https://blog.csdn.net/qq_31634461/article/details/79377256
Mac 下的操作
安装
- idea 安装 lombok插件
- 安装 rabbitmq
brew install rabbitmq
Mac 下安装 rabbitmq
https://www.jianshu.com/p/60c358235705
Management Plugin enabled by default at http://localhost:15672 Bash completion has been installed to: /usr/local/etc/bash_completion.d To have launchd start rabbitmq now and restart at login: brew services start rabbitmq Or, if you don't want/need a background service you can just run: rabbitmq-server
consul 安装及下载
注册中心 Consul 使用详解
https://blog.csdn.net/love_zngy/article/details/82216696
https://www.consul.io/downloads.html
项目启动:
brew services start rabbitmq // http://localhost:15672/#/users redis-server ./consul agent -dev // http://127.0.0.1:8500/ui/dc1/services
Spring Cloud Gateway 尝试
实例代码, fangjia-gateway
https://github.com/yinjihuan/spring-cloud
参考文章:
http://cxytiandi.com/blog/detail/20430
idea 用 spring init 模板创建
spring: cloud: gateway: routes: - id: path_route uri: http://cxytiandi.com predicates: - Path=/course
相当于根据路径自动转发,或者转发到服务提供者也行
spring cloud gateway之服务注册与发现
初始的gateway工程,会自动创建以服务名为 router 的地址转发。但这个规则可以配置
https://blog.csdn.net/forezp/article/details/85210153
- id: service-producer uri: lb://SERVICE-PRODUCER predicates: - Path=/producer/** filters: - StripPrefix=1
【注意】注册中,StripPrefix 是去掉项目路径中的前缀,确保地址正确才能访问。
http://localhost:8501/producer/hello
注意地址中,多了 producer,
错误的地址 : http://localhost:8501/hello 这个地址是提示 404 错误的
那么,用gateway 就可以实现了转发的功能
Spring Cloud Git 配置中心的尝试
克隆仓库地址:
https://gitee.com/ityouknow/spring-cloud-examples
/Users/jack/exercise/spring-cloud-examples/spring-cloud-config-git
主要参考如下文章:
配置中心git示例
http://www.ityouknow.com/springcloud/2017/05/22/springcloud-config-git.html
主要内容:
建立 仓库 的 server 端,负责从 git 仓库中拉取配置文件
建立 一个客户端,通过配置注解: 使用@Value
注解来获取server端参数的值
存在问题: 不能自动更新获取到仓库中的变化内容
http://www.ityouknow.com/springcloud/2017/05/23/springcloud-config-svn-refresh.html
增加了spring-boot-starter-actuator
包,spring-boot-starter-actuator
是一套监控的功能,可以监控程序在运行时状态,其中就包括/refresh
的功能。
需要给加载变量的类上面加载@RefreshScope
,在客户端执行/refresh
的时候就会更新此类下面的变量值。
http://www.ityouknow.com/springcloud/2017/05/25/springcloud-config-eureka.html
把服务端和客户端 都注册 到注册中心,从注册中心来获取服务
http://www.ityouknow.com/springcloud/2017/05/26/springcloud-config-eureka-bus.html
利用消息队列 来刷新注册中心中的所有服务,以及能够实现部分刷新 的效果。
WindowsServer2012 下的环境尝试
环境搭建-在Windows Server 2012 R2上搭建Redis
https://www.jianshu.com/p/fdf41b1d85a1
redis Windows 版本
https://github.com/MicrosoftArchive/redis/releases
默认安装位置:
C:\Program Files\Redis
命令行执行:
redis-server.exe redis.windows.conf redis-cli.exe info
rabbitmq
1. OTP 21.2 Windows 64-bit Binary File
http://www.erlang.org/downloads
2. rabbitmq 下载地址,Windows: Installer
http://www.rabbitmq.com/download.html
两个软件都安装好后,通过如下文章开通管理UI
Windows 安装Rabbitmq
https://www.cnblogs.com/hobinly/p/6265668.html
访问地址:
http://192.168.1.121:15672/#/users
打开远程访问参考
https://blog.csdn.net/juan0728juan/article/details/77653776
新建用户,并设置对应权限
consul
Consul 是由 HashiCorp 公司推出的开源软件,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其他工具(比如 ZooKeeper 等),使用起来也较为简单。
下载windows 安装版本
https://www.consul.io/downloads.html
csdn用的资源是 1.4.0,我是从官网下的版本:1.4.2
https://download.csdn.net/download/zjl91dragon/10840388
新建 start-consul.bat 文件,调试模式下,启动服务器命令如下:
consul agent -dev -client 0.0.0.0
启动参数的具体意义,参见: https://blog.csdn.net/liuzhuchen/article/details/81913562 文章
中心访问地址
http://localhost:8500/ui/dc1/services
http://192.168.1.121:8500/ui/dc1/services
微服务Consul系列之服务部署、搭建、使用
http://www.imooc.com/article/details/id/275704
consul线上安装和权限配置
https://www.jianshu.com/p/d996c08759ad
ACL Consul uses Access Control Lists (ACLs) 系统用户权限认证,仅仅对consul的资料进行安全认证
博客资料
使用consul实现分布式服务注册和发现
https://tonybai.com/2015/07/06/implement-distributed-services-registery-and-discovery-by-consul/
consul-template是一个将consul集群中存储的信息转换为文件形式的工具。常用的场景是监听consul集群中数据的变化,并结合模板将数据持久化到某个文件中,再执行某一关联的action。比如我们这里通过consul-template监听consul集群中service信息的变化,并将service信息数据与nginx的配置模板结合,生成nginx可用的nginx.conf配置文件,并驱动nginx重新reload配置文件,使得nginx的配置更新生效。因此一般来说,哪里部署有nginx,我们就应该有一个配对的consul-template部署
Registrator是另外一种工具,它监听Docker引擎上发生的容器创建和停止事件,并将启动的容器信息以consul service的形式存储在consul集群中。因此,Registrator和node上的docker engine对应,有docker engine部署的节点上都应该安装有对应的Registator。因此我们要在实验环境的三个节点上都部署Registrator。
客户端 Token 与 API 网关结合
这个方案意味着所有请求都通过网关,从而有效地隐藏了微服务。 在请求时,网关将原始用户令牌转换为内部会话 ID 令牌。在这种情况下,注销就不是问题,因为网关可以在注销时撤销用户的令牌。
http://www.cnblogs.com/softidea/p/7261095.html
大神告诉你如何理解微服务框架
重点推荐
Kitty
基于Spring Boot、Spring Cloud、Vue.js 、Element UI实现,采用前后端分离架构的权限管理系统,JAVA快速开发平台。
http://139.196.87.48:9002/kitty
项目地址:
https://gitee.com/liuge1988/kitty
Cloud-Platform
https://gitee.com/zzyt/ace-security/
调用Server中的 Consul 服务器
服务提供者
idea,创建项目
SpringInit / Cloud Core / Cloud Bootstrap
注意版本:
org.springframework.boot <version>2.0.3.RELEASE</version> // 启动类设置注解 @EnableDiscoveryClient
pom.xml
<modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.geosun</groupId> <artifactId>whhd-service</artifactId> <version>0.0.1-SNAPSHOT</version> <name>whhd-service</name> <description>whhd service producer</description> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
http://www.ityouknow.com/springcloud/2018/07/20/spring-cloud-consul.html
注册服务的配置文件:
spring.application.name=spring-cloud-consul-producer server.port=8502 spring.cloud.consul.host=192.168.1.121 spring.cloud.consul.port=8500 #注册到consul的服务名称 spring.cloud.consul.discovery.serviceName=service-producer
【注意】 下面使用 yml 文件方式,提示错误。提示信息:
Consul service ids must not be empty, must start with a letter, end with a letter or digit, and have as interior characters only letters, digits, and hyphen: null
【解决办法】在 文件夹目录,执行 mvn clean install
https://blog.csdn.net/qq_16982607/article/details/72846611
application.yml
server: port: 8601 spring: application: name: whhd-service cloud: consul: host: 192.168.1.121 port: 8500 discovery: instanceId: serviceName: whhd-service
consul 消费者调用关键代码
1. 配置远端注册中心服务器地址
2. 发送远程调用指令
@RestController public class CallHelloController { @Autowired private LoadBalancerClient loadBalancer; @RequestMapping("/call") public String call() { ServiceInstance serviceInstance = loadBalancer.choose("service-producer"); System.out.println("服务地址:" + serviceInstance.getUri()); System.out.println("服务名称:" + serviceInstance.getServiceId()); String callServiceResult = new RestTemplate().getForObject(serviceInstance.getUri().toString() + "/hello", String.class); System.out.println(callServiceResult); return callServiceResult; } }
延伸:带参数的远程调用方法等
项目配置文件代码及pom.xml 依赖库相关代码,参见博主的开源示例代码。
spring.application.name=consul-test-consumer server.port=8501 spring.cloud.consul.host=192.168.1.121 spring.cloud.consul.port=8500 #\u8BBE\u7F6E\u4E0D\u9700\u8981\u6CE8\u518C\u5230consul\u4E2D spring.cloud.consul.discovery.register=false
appliction.yml 版本
server: port: 8501 spring: application: name: consul-test-consumer cloud: consul: host: 192.168.1.121 port: 8500 discovery: register: false
consul 的参数介绍
https://www.jb51.net/article/137381.htm
资料
Spring Cloud Eureka Consul使用和对比
https://blog.csdn.net/ZYC88888/article/details/81453647
consul 与 eureka
https://blog.csdn.net/baidu_36327010/article/details/80363703
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)