Consul服务注册与发现😶
Consul 服务注册与发现 😶1、Consul 简介1-1、是什么Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。
提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之 Consul 提供了一种完整的服务网格解决方案。
它具有很多优点。包括: 基于 raft 协议,比较简洁; 支持健康检查, 同时支持 HTTP 和 DNS 协议 支持跨数据中心的 WAN 集群 提供图形界面 跨平台,支持 Linux、Mac、Windows。
1-2、能干嘛
服务发现:提供 HTTP 和 DNS 两种发现方式
健康监测:支持多种方式,HTTP、TCP、Docker、Shell 脚本定制化监控
KV 存储:Key、Value 的存储方式
多数据中心:Consul 支持多数据中心
可视化 Web 界面
1-3、去哪下https://www.consul.io/downloads.html
1-4、使用方法consul 安装教程(linux 系统) - 知乎 ( ...
zookeeper服务注册中心😶
zookeeper 服务注册中心 😶1、SpringCloud 整合 Zookeeper 代替 Eureka1-1、注册中心 Zookeeperzookeeper 是一个分布式协调工具,可以实现注册中心功能关闭 Linux 服务器防火墙后动 zookeeper 服务器zookeeper 服务器取代 Eureka 服务器,zk 作为服务注册中心
2、服务提供者2-1、新建模块 cloud-provider-payment8004如果 zookeeper 的版本和导入的 jar 包版本不一致,启动就会报错,由于 zk-discovery 和 zk 之间的 jar 包冲突的问题。
下图给出的是 spring-cloud-starter-zookeeper-discovery 所引入的 zookeeper jar 包版本,可在父 pom 中找到,如果自己的 zoookeeper 版本和其一致,可不用修改。
pom.xml
解决这种冲突,需要在 pom 文件中,排除掉引起冲突的 jar 包,添加和服务器 zookeeper 版本一致的 jar 包,但是新导入的 zookeeper jar 包 ...
Eureka服务注册中心😶
Eureka 服务注册中心 😶什么是服务治理:
SpringCloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理
在传统的 rpc 远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。
什么是服务注册与发现:
Eureka 采用了 CS 的设计结构,Eureka Server 服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server 并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。这点和 zookeeper 很相似
在服务注册与发现中,有一个注册中心。当服务器启动时候,会把当前自己服务器的信息 比如服务地址 通讯地址等以别名方式注册到注册中心上。另一方(消费者服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地 RPC 调用。RPC 远程调用框架核心设计思想:在于注册中心,因为便 ...
微服务架构编码构建
微服务架构编码构建**约定>配置>编码**
1、构建父工程1-1、创建项目
1-2、字符编码
1-3、注解生效激活
1-4、java编译版本选择:java8
1-5、父工程pom文件123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...
springcloud介绍
一、springcloud 介绍1、什么是 springcloudSpringCloud 是微服务一站式服务解决方案,微服务全家桶。它是微服务开发的主流技术栈。它采用了名称,而非数字版本号。
SpringCloud 和 springCloud Alibaba 目前是最主流的微服务框架组合。
2、SpringCloud 版本选择选用 springboot 和 springCloud 版本有约束,不按照它的约束会有冲突。
Cloud Release Train
Boot Version
Hoxton
2.2.x, 2.3.x (Starting with SR5)
Greenwich
2.1.x
Finchley
2.0.x
Finchley
1.5.x
Dalston
1.5.x
查看版本对应关系:https://start.spring.io/actuator/info
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 ...
java面试题
一、redis1、缓存穿透查询一个不存在的数据,MySQL 查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库
解决方案:
缓存空数据——当 redis 中和数据库中无该数据,则对该数据进行 null 值缓存。弊端:数据量过多会导致内存损耗严重
布隆过滤器——在请求之前添加布隆过滤器拦截,如布隆过滤器没有,则直接返回。
2、缓存击穿给某一个 key 设置了过期时间,当 key 过期的时候,恰好这时间点对这个 key 有大量的并发请过来,这些并发的请求可能会瞬间把 DB 压垮
解决方案:
互斥锁,强一致,性能差
逻辑过期,高可用,性能优,不能保证数据绝对一致
3、缓存雪崩缓存雪崩是指在同一时段大量的缓存 key 同时失效或者 redis 服务宕机,导致大量请求到达数据库,带来巨大压力。
解决方案:
给不同的 key 的 TTL(过期时间)添加随机值
利用 redis 集群提高服务的可用性
给缓存业务添加降级限流策略
给业务添加多级缓存
打油诗:来自黑马
《缓存三兄弟》穿透无中生有 key,布隆过滤 null 隔离
缓存击穿过期 key,锁与非期解难题
雪崩大量过期 ...