1.SOA与微服务的差别
(1)soa架构(2个controller调用公共的service、dao层)的缺点
依赖于中心化服务发现机制;
因为SOA采用SOAP协议(Http+XML),XML传输协议比较占用宽带,XML报文中有非常大
冗余数据,所以微服务架构中以json轻量级方式代替xml传输;
soa管理非常混乱,缺少服务管理和治理设施不完善。
(2)微服务是从SOA演变过来的
2. SpringCloud中zuul网关
(1)首先在Eureka注册中心注册网关服务
eureka: client: service-url: defaultZone: http://localhost:8761/eureka/
(2)设置本身的配置
server: port: 8100 spring: application: name: service-zuul
(3)将其他服务的路径配置在网关中,例如
zuul:
routes:
api-a:
path: /api-member/**
service-id: service-member
api-b:
path: /api-order/**
service-id: service-order
(4)在启动项加注解
@EnableZuulProxy @EnableEurekaClient
(5)默认Eureka注册中心和订单服务已开启,在浏览器直接访问网关的端口加请求参数,例如
http://localhost:8100/api-order/getOrder,页面结果是 订单拿到了
@RestController public class OrderController { @GetMapping("getOrder") public String get(){ return "订单拿到了"; } }
3. 注册中心Eureka
(1)配置信息
eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ register-with-eureka: false server: enable-self-preservation: false (排除自己) spring: application: name: eureka server: port: 8761
(2)pom
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
(3)启动加注解
@EnableEurekaServer
(4)访问http://localhost:8761/,可以看到已注册的服务 application
(5)SpringCloud支持3种注册中心:Eureka、Consul、ZK
Dubbo支持ZK和redis
(6)参考图解