作为一名刚刚接触微服务的小白,在学习中获得了一下经验,总结了一些自己对springcloud的认识和理解,希望能与大家分享和交流,如有不对或者其他见解,欢迎指正(ps:本文多用通俗易懂的大白话,没有太多专业术语)。
对spring boot的认识:
在我看来,微服务是相对于传统服务来讲的:接下来简单的介绍下微服务和传统服务直接的区别:
传统服务:传统的单体架构
1.单体架构有比较复杂的结构;2.不易于维护,只要有一点需求的变更,就要把整个项目重新打包,发布;3.项目随时间越来越大,发布会越来越慢;4.不易更换框架等。
微服务:分布式架构
1.功能模块独立,每个服务运行于独立的进程;2.局部修改,易于部署;3.技术桟不受限等。
spring cloud
spring cloud是基于spring boot开发的,是对spring boot的封装&增强;是分布式系统的开发工具集(包括:服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等)。
接下来首先用到服务的发现注册:Eureka
Eureka来源于生产环境,springcloud对eureka的支持很好,每个微服务在启动时,都会将自己的ip和port注册到eureka上,接着服务会每隔30秒向eureka发起一次通知(心跳机制),如果服务连着3次(90秒)没有通知eureka,eureka就会认为该服务已经挂了,即会从注册中心剔除该服务;每台eureka server之间会同步服务注册表(高可用);客户端缓存:客户端缓存会把所以的注册表信息都缓存到本地,即使所有的eureka都挂了,短时间内也不影响服务提供者和消费者的调用。
以上是我对springcloud的简短说明,接下在说说我在demo开发的过程(本人亲测)。
第一步:创建maven/gradle项目,本文以maven项目为例。
可以自己创建maven项目,添加依赖到pom,这里我用的比较偷懒的方法,不管你用的IDE是Eclipse 还是 idea,你都可以在浏览器 :http://start.spring.io/ 创建项目,如图:
这里你可以选择创建maven/gradle项目,可以添加你需要的各种依赖;(idea中集成的有此功能)。
在此创建两个工程:provider 和 customer,我们用RestTemplate来实现customer调用provider。
第二步:实现Eureka注册发现
1.通过上述,创建新工程my-eureka-service,加入spring-cloud-starter-eureka-service依赖,
2.在本服务的启动类上加注解 @EnableEurekaService/@EnableDiscoveryService;
3.在application.yml中加入配置。
eureka:instance:prefer-ip-address:true
eureka:client:service-url:defaultZone:http://localhost:8000/eureka/
启动,在浏览器中 http://localhost:8000 看到eureka主页,成功。但是现在还没有服务注册到Eureka上,接下来实现注册;
1.在provider工程中,加入spring-cloud-starter-eureka依赖;
2.在本服务到启动类上加注解@EnableEurekaClient/@EnableDiscoveryClient;
3.在applicatiom.yml中加入配置。
eureka:client:service-url:defaultZone:http://localhost:8000/eureka/
spring:application:name:myweb
启动,看到eureka主页中有provider工程极为成功。
接着以同样的方法,可以把服务消费者也注册到eureka上去,同样访问eureka,可以看到服务提供者和消费者都被注册在eureka上即为成功,接着调用测试demo验证即可。