springcloud入门

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ACID
Atomicity(原子性)
Consistency(一致性)
Isolation(事务 独立性)
Durability(持久性)
CAP三选一原则
Consistency(强一致性)
Availablity(可用性)
Partition tolerance(分区容错性)
在这里插入图片描述
在这里插入图片描述

6. Ribbon负载均衡

码神》码龙》码工》码农》码畜》码渣
RibbonRibbon github是基于Netflix Ribbon实现的一套客户端 负载均衡(Load Balance)的工具。
完善的配置项超时,重试。。
帮助基于某种规则(轮询,随机)。也可以自定义负载均衡算法。

初步配置

1.maven 2.yml 3.@EnableXXX

<!-- Ribbon相关 ↓-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
 <!-- Ribbon相关 ↑-->

server:
  port: 80
eureka:
  client:
    register-with-eureka: false      #false表示不向注册中心注册自己。
    service-url:
       # 设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
//主启动类增加LB启动注解
@EnableEurekaClient

@Configuration
public class ConfigBean {
    @Bean
    // 开启Ribbon负载均衡
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        // 提供了很多中便捷访问远程http的服务的方法
        // 是一种简单便捷的访问restful的服务模板类
        // 是spring 提供用于访问Rest服务的客户端模版工具集
        return new RestTemplate();
    }
    @Bean
    public IRule myRule(){
        // 用随机算法代替默认的轮询算法,默认的是随机算法,新算法加入到容器就会覆盖默认
//        return new RandomRule();
        // 重试算法
        return new RetryRule();
    }
}

客户端访问类,访问地址改为微服务的名字,通过Eureka上面注册服务的名字去访问,这样同名的多个服务集群可以实现负载均衡的访问策略。
Ribbon 和Eureka整合后消费者可以直接调用服务名而不用关心地址和端口号。

@RestController
@RequestMapping("/consumer/dept")
public class DeptController_Consumer {

    //private final static String RESTPRE = "http://127.0.0.1:8001";
    // 设置成对外暴露的微服务的名字,消费者直接通过Eureka调用服务名而不用关心地址和端口号
    private final static String RESTPRE = "http://SPRINGCLOUD-DEPT";
    /**
     * 使用restTemplate访问restful接口非常的简单粗暴无脑
     * (url, requestMap, ResponseBean.class) 这三个参数分别代表
     * REST请求地址, 请求参数, Http响应转换被转换成的对象类型
     */
    @Autowired
    private RestTemplate restTemplate;
    @ApiOperation(value="根据id查询部门信息", notes="根据url的id来查询部门信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "部门ID", required = true, dataType = "Long",paramType = "path"),
    })
    @GetMapping("/info/{id}")
    public Dept info(@PathVariable(value = "id") Long id){
        return restTemplate.getForObject(RESTPRE + "/dept/info/" + id, Dept.class);
    }
    @ApiOperation(value="新增部门", notes="新增部门")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "dept", value = "部门实体", required = true, dataType = "Dept")
    })
    @PostMapping("/add")
    public boolean add(@RequestBody Dept dept){
        return restTemplate.postForObject(RESTPRE + "/dept/add", dept, Boolean.class);
    }
    @ApiOperation(value="获取部门集合", notes="获取部门集合")
    @GetMapping("/list")
    public List<Dept> list(){
        return restTemplate.getForObject(RESTPRE + "/dept/list", List.class);
    }
    @GetMapping("/discovery")
    public Object discovery(){
        return restTemplate.getForObject(RESTPRE + "/dept/discovery", Object.class);
    }
}

在这里插入图片描述
在这里插入图片描述

server:
  port: 8003
mybatis:
  config-location: classpath:mybatis/mybatis.cfg.xml        # mybatis配置文件所在路径
  type-aliases-package: cn.sysq.springcloud.pojo            # 所有pojo类所在包
  mapper-locations:
  - classpath:mybatis/mapper/**/*.xml                       # mapper映射文件

spring:
   application:
    # 对外暴露的微服务的名字
    name: springcloud-dept
   datasource:
    type: com.alibaba.druid.pool.DruidDataSource            # 当前数据源操作类型
    driver-class-name: org.gjt.mm.mysql.Driver              # mysql驱动包
    url: jdbc:mysql://localhost:3306/cloudDB03?useSSL=true  # 数据库名称
    username: root
    password: 1234
    dbcp2:
      min-idle: 5                                           # 数据库连接池的最小维持连接数
      initial-size: 5                                       # 初始化连接数
      max-total: 5                                          # 最大连接数
      max-wait-millis: 200                                  # 等待连接获取的最大超时时间
eureka:
  client:
  # 客户端注册进eureka服务列表内
    service-url:
#      defaultZone: http://127.0.0.1:7001/eureka
       defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
  instance:
    # 不使用默认的名字 改成我们自己定义的
    instance-id: springcloud-dept8003
    # 访问路径可以显示IP地址
    prefer-ip-address: true
# 对当前的微服务做说明
info:
  app.name: ljz-springcloud
  company.name: www.sanyueshiqi.cn
  build.artifactId: ${project.artifactId}
  build.version: ${project.version}

IRule接口是LB算法的规则接口,支持的算法实现这个接口
在这里插入图片描述

LB集中式 F5 nginx
LB进程内 ribbon

7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值