SpringCloud

  1. 1.单体应用架构和微服务的架构优缺点

单体应用架构:所有的jar包,在整合成打成一个war 部署tomcat运行
缺点:
如果多写一个功能,在部署,编译 测试上面变得更加 难
技术选型上面不是很灵活
扩展避免麻烦 浪费很多空间
微服务架构: 把以前整个服务进行拆分成微小的服务;每个服务独立运行 独立部署 ,独立维护 --分布式
好处:
部署,编译,测试 更加简单
技术比较灵活 --每个服务都可以使用不一样技术
扩展比较方便 --如果哪个服务负载比较大,就可以针对那个服务去扩展

  • 实现微服务的架构 技术

服务治理的框架
Springboot+springCloud
Dubbo
Dubbox
SpringcloudAlibaba

  • SpringCloud使用

① 服务注册中心 Eureka /Consule/Zookeeper 7001
导入jar 配置 启动
② 服务提供者 provider 8001
③ 服务消费者 consumer 9001

服务要注册到注册中心,然后消费者来消费服务
步骤:

启动注册中心 7001开头

server:
port: 7001
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false #是否要注册到eureka
fetchRegistry: false #表示是否从Eureka Server获取注册信息
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机配

启动类

@SpringBootApplication
@EnableEurekaServer//标识是eureka服务端
public class EnrekaServerApplication_7001 {
public static void main(String[] args) {
        SpringApplication.run(EnrekaServerApplication_7001.class);
    }
}
服务提供者  8001开头
消费者 9001开头

注册中心集群

 (1) 修改hosts 地址
127.0.0.1       eureka-7001.com
127.0.0.1       eureka-7002.com
(2) 7001注册配置
server:
port: 7001
eureka:
instance:
hostname: eureka-7001.com
client:
registerWithEureka: false #是否要注册到eureka
fetchRegistry: false #表示是否从Eureka Server获取注册信息
serviceUrl:
#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机配置
defaultZone: http://eureka-7002.com:7002/eureka/ #集群配置,如果有多个,有逗号分割,不要包含自己


server:
port: 7002
eureka:
instance:
hostname: eureka-7002.com
client:
registerWithEureka: false #是否要注册到eureka
fetchRegistry: false #表示是否从Eureka Server获取注册信息
serviceUrl:
#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机配置
defaultZone: http://eureka-7001.com:7001/eureka/ #集群配置,如果有多个,有逗号分割,不要包含自己

(2) 把服务提供者注册到注册中心 7001和7002里面

server:
port: 8001
spring:
application:
name: user-provider #不要使用下划线
eureka:
client:
service-url:
#defaultZone: http://localhost:7001/eureka #告诉服务提供者要把服务注册到哪儿
defaultZone: http://eureka-7001.com:7001/eureka,http://eureka-7002.com:7002/eureka
instance:
prefer-ip-address: true #显示客户端真实ip

(3) 消费 实现负载均衡

如有要实现负载均衡 在提供一个服务 8002

Ribbon

@Configuration
public class CfgBean {

@Bean
@LoadBalanced //开启负载均衡
public RestTemplate getRestTemplate(){
return  new RestTemplate();
    }
}
-----------------------------------------------------------------------------------
@RestController
@RequestMapping("/consumer")
public class UserController {

//多个方法调用只需改一处就ok
    //public static  final String URL_PREFIX = "http://localhost:8001";
public static  final String URL_PREFIX ="http://USER-PROVIDER"; //通过服务名从注册中心获取服务列表,通过负载均衡调用

@Autowired
private RestTemplate restTemplate;

@RequestMapping("/user/{id}")
public User getUser(@PathVariable("id")Long id){
//调用远程服务 http请求
String url = URL_PREFIX+"/provider/user/"+id;
return restTemplate.getForObject(url,User.class );
    }
}

Fegin

通过一个接口方式来实现 --推荐方式 暴露接口
Ribbon resttemplate方式来访问 – 传递参数比较麻烦

(1) 写一个接口

//调用服务名字
@FeignClient(value = "USER-PROVIDER")
@RequestMapping("/provider")
public interface UserCilent {
@RequestMapping("/user/{id}") //user/1
User getUser(@PathVariable("id") Long id);
}

(2) 消费端 9002 fegin调用

@RestController
@RequestMapping("/consumer")
public class UserController {
@Autowired
private UserCilent userCilent;
@RequestMapping("/user/{id}")
public User getUser(@PathVariable("id")Long id){
        System.out.println(userCilent.getClass());
return userCilent.getUser(id);
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值