Spring Cloud 微服务简介
1. 单体应用优化
1.1 可使用SOA面向服务架构(将每个模块分开,某个模块出问题了,不会影响其他模块)
1.2 如果某个服务于其他服务有调用关系,那么就需用到ESB(企业服务总线)
2. 微服务架构
2.1 将单体应用切分为小服务单元
3. Spring Cloud
3.1 是一个工具箱
3.2 基于SpringBoot,封装了Netflix的框架
3.3 将Netflix与Spring容器进行整合
4. Spring Cloud整合的Netflix框架
4.1 Eureka:基于REST服务的分布式中间件,主要用于服务管理
4.2 Hystrix:容错框架,通过添加延迟阀值以及容错的逻辑,来帮助我们控制分布式系统间组件的交互。
4.3 Feign:一个REST客户端,目的是为了简化WebService客户端的开发
4.4 Ribbon:负载均衡框架 Zuul:为微服务集群提供过代理,过滤,路由等功能
5. 微服务的优点
5.1 易于开发和维护:由于微服务单个模块就相当于一个项目,开发这个模块我们就只需关心这个模块的逻辑即可,代码量和逻辑复杂度都会降低,从而易于开发和维护。
5.2 启动较快:这是相对单个微服务来讲的,相比于启动单体架构的整个项目,启动某个模块的服务速度明显是要快很多的。
5.3 局部修改容易部署:在开发中发现了一个问题,如果是单体架构的话,我们就需要重新发布并启动整个项目,非常耗时间,但是微服务则不同,哪个模块出现了bug我们只需要解决那个模块的bug就可以了,解决完bug之后,我们只需要重启这个模块的服务即可,部署相对简单,不必重启整个项目从而大大节约时间。
5.4 技术栈不受限:比如订单微服务和电影微服务原来都是用java写的,现在我们想把电影微服务改成nodeJs技术,这是完全可以的,而且由于所关注的只是电影的逻辑而已,因此技术更换的成本也就会少很多。
上面简单的介绍了一下什么Spring Cloud微服务,那么下面直接上代码,为的就是能让初学者快速上手,自己搭建起Spring Cloud微服务框架。
搭建Eureka程序
什么是Eureka:Eureka是Netflix开发的服务发现组件,本身是一个基于REST的服务。Spring Cloud将它集成在其子项目spring-cloud-netflix中,以实现Spring Cloud的服务发现功能。
Eureka的配置可以说是非常简单的,配置如下:
1 <parent> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-parent</artifactId> 4 <version>2.0.3.RELEASE</version> 5 <relativePath/> 6 </parent> 7 <dependencies> 8 <dependency> 9 <groupId>org.springframework.cloud</groupId> 10 <artifactId>spring-cloud-starter-eureka-server</artifactId> 11 </dependency> 12 </dependencies>
pom.xml
1 # 自定义端口号 2 server.port=8761 3 4 eureka.instance.hostname=127.0.0.1 5 6 eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ 7 8 # 为false意味着自身仅作为服务器,不作为客户端 9 eureka.client.registerWithEureka=false 10 11 # 为false意味着无需注册自身 12 eureka.client.fetchRegistry=false
application.properties
1 @SpringBootApplication 2 @EnableEurekaServer 3 public class Application { 4 5 public static void main(String[] args) { 6 new SpringApplicationBuilder(Application.class).web(true).run(args); 7 } 8 }
Application.java
启动后,如果能够正常访问到这个页面的朋友们,恭喜你们 成功了 !!!
想要做集群的话,也是很简单的,只需在服务端改一下配置就可以了,废话不多说,请继续往下看:
需要修改系统文件:C:/Windows/System32/drivers/etc/hosts
增加映射:127.0.0.1 slave1 slave2(无论是slave1还是slave2,都会映射到127.0.0.1)(这个映射一定要加,否则映射时会出问题)
因加入了集群,那么就需要对每个服务进行单独启动(这里进行手动启动服务)区别如下:
1 @SpringBootApplication 2 @EnableEurekaServer 3 public class Application { 4 5 public static void main(String[] args) { 6 Scanner scan = new Scanner(System.in);// 需手动输入:刚刚配置过映射的 slave1、slave2 7 String pro = scan.nextLine(); 8 new SpringApplicationBuilder(Application.class).profiles(pro).run(args); 9 } 10 }
Application.java
为了方便配置,在这里将配置文件“application.properties”更改为“application.yml“,在这里有一点需要注意的是:在application.yml配置中的书写的规范,换行后 需加两个空格(使用缩进的话不知道会不会出现问题,本人没有亲自尝试过)
注:
两个配置中间的横杠:---(这里的”-“,一定要是三个,多一个 少一个都不行,本人亲自测试过)
name: spring-cloud-server(Eureka程序的项目名)
profiles: slave1(刚刚配置映射时的名称)
1 server: 2 port: 8761 3 spring: 4 application: 5 name: spring-cloud-server 6 profiles: slave1 7 eureka: 8 client: 9 serverUrl: 10 defaultZone: http://slave2:8762/eureka 11 --- 12 server: 13 port: 8762 14 spring: 15 application: 16 name: spring-cloud-server 17 profiles: slave2 18 eureka: 19 client: 20 serverUrl: 21 defaultZone: http://slave1:8761/eureka
application.yml
输入”slave1“启动后截图:
输入”slave2“启动后截图:
到这里,Eureka集群配置就成功了!!!
因时间有限,至于服务提供者及服务调用者,本人会在以后的时间里进行更新!!!
原文地址:https://www.cnblogs.com/lpxdbk/p/9644677.html