随笔分类 - Java
摘要:本文使用 Sharding-JDBC 实现读写分离,基于 CentOS 7 + MySQL 5.7 一、MySQL 安装及配置 1.1 安装 依次执行命令: sudo wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-
阅读全文
摘要:本文分别使用 Elasticsearch Repository 和 ElasticsearchTemplate 实现 Elasticsearch 的简单的增删改查 一、Elastic Stack Elastic Stack 是 ELK Stack 在 5.0 版本加入 Beats 套件后的新称呼 E
阅读全文
摘要:问题描述 使用 Zuul 作为网关,偶发超时问题及第一次调用触发熔断问题 解决方案 超时问题 ribbon: ReadTimeout: 10000 SocketTimeout: 60000 第一次调用触发熔断 hystrix: command: default: execution: isolati
阅读全文
摘要:问题描述 微服务之间使用 Feign 调用,偶发超时问题,配置如下: feign: client: config: default: connectTimeout: 10000 readTimeout: 10000 详细参考官方文档:https://cloud.spring.io/spring-cl
阅读全文
摘要:基础知识 虚拟主机 (Virtual Host): 每个 virtual host 拥有自己的 exchanges, queues 等 (类似 MySQL 中的库) 交换器 (Exchange): 生产者产生的消息并不是直接发送给 queue 的,而是要经过 exchange 路由, exchang
阅读全文
摘要:使用 Spring Boot 开发 API 使用 Spring Security + OAuth2 + JWT 鉴权,已经在 Controller 配置允许跨域: @RestController @CrossOrigin(allowCredentials = "true", allowedHeade
阅读全文
摘要:问题描述 微服务中使用 OAuth2 鉴权,直接访问正常,通过 Zuul 访问报错: { "error": "unauthorized", "error_description": "Full authentication is required to access this resource" }
阅读全文
摘要:在 Spring Boot 中集成 Swagger 可参考之前的文章:Spring Boot 2 集成 Swagger, 在各个微服务中的配置与之相同;本文仅介绍在 Zuul 中的配置 在 Zuul 项目中添加配置 @Configuration @EnableSwagger2 public clas
阅读全文
摘要:雪花算法根据时间戳生成有序的 64 bit 的 Long 类型的唯一 ID 各 bit 含义: 1 bit: 符号位,0 是正数 1 是负数, ID 为正数,所以恒取 0 41 bit: 时间差,我们可以选择一个参考点,用它来计算与当前时间的时间差 (毫秒数),41 bit 存储时间差,足够使用 6
阅读全文
摘要:UUID.randomUUID() 生成的 UUID 是无序的,如果作为数据主键,不利于索引 Hibernate 的 UUIDHexGenerator.generate() 方法可以生成有序的 UUID, 本文参考其实现: public class SequentialUuidHexGenerato
阅读全文
摘要:本文测试代码使用 Spring Boot 2.1.6.RELEASE + Swagger 2.9.2 添加依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <vers
阅读全文
摘要:通过 Spring Security + OAuth2 认证和鉴权,每次请求都需要经过 OAuth Server 验证当前 token 的合法性,并且需要查询该 token 对应的用户权限,在高并发场景下会存在性能瓶颈。使用 JWT 的方式,OAuth Server 只验证一次,用户所有信息 (包括
阅读全文
摘要:Spring Security Spring Security 是 Spring Resource 社区的一个安全组件。在安全方面,有两个主要的领域,一是“认证”,即你是谁;二是“授权”,即你拥有什么权限,Spring Security 的主要目标就是在这两个领域 Spring OAuth2 OAu
阅读全文
摘要:Spring Boot Admin 用于管理和监控一个或者多个 Spring Boot 程序 新建 spring-boot-admin-server pom <parent> <artifactId>spring-cloud-parent</artifactId> <groupId>com.karo
阅读全文
摘要:微服务架构是一个分布式架构,微服务系统按业务划分服务单元,一个微服务系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂性较高,如果出现了错误和异常,很难去定位。主要体现在一个请求可能需要调用很多个服务,而内部服务的调用复杂性决定了问题难以定位。所以在微服务架构中,必须实现分布式链路追踪,去跟
阅读全文
摘要:在实际开发过程中,每个服务都有大量的配置文件,例如数据库的配置、日志输出级别的配置等,而往往这些配置在不同的环境中也是不一样的。随着服务数量的增加,配置文件的管理也是一件非常复杂的事 在微服务架构中,需要有统一管理配置文件的组件,例如 Spring Cloud 的 Spring Cloud Conf
阅读全文
摘要:Zuul 作为路由网关组件,在微服务架构中有着非常重要的作用,主要体现在以下 6 个方面: Zuul, Ribbon 以及 Eureka 相结合,可以实现智能路由和负载均衡的功能,Zuul 能够将请求流量按某种策略分发到集群状态的多个服务实例 网关将所有服务的 API 接口统一聚合,并统一对外暴露。
阅读全文
摘要:在复杂的分布式系统中,可能有几十个服务相互依赖,这些服务由于某些原因,例如机房的不可靠性、网络服务商的不可靠性等,导致某个服务不可用 。 如果系统不隔离该不可用的服务,可能会导致整个系统不可用。Hystrix 提供了熔断器功能,能够阻止分布式系统中出现联动故障。Hystrix 是通过隔离服务的访问点
阅读全文
摘要:新建 spring-cloud-eureka-feign-client Module pom <parent> <artifactId>spring-cloud-parent</artifactId> <groupId>com.karonda</groupId> <version>1.0.0</ve
阅读全文
摘要:负载均衡是指将负载分摊到多个执行单元上,常见的负载均衡有两种方式:一种是独立进程单元,通过负载均衡策略,将请求转发到不同的执行单元上,例如 Ngnix;另一种是将负载均衡逻辑以代码的形式封装到服务消费者的客户端上,服务消费者客户端维护了一份服务提供者的信息列表,有了信息列表,通过负载均衡策略将请求分
阅读全文