随笔分类 - springcloud&分布式相关
cloud全家桶
摘要:1. nacos 服务端源码启动 资源信息: 操作系统:mac JDK: 8 nacos: 1.1.4 (2.2.1 版本需要protobuf, 插件比较麻烦就放弃了) 下载项目 选择 1.1.4 版本 mvn 编译所有项目 创建数据库:nacos/distribution/conf/nacos-m
阅读全文
摘要:在分布式系统中,数据存储有两种,一种是共用一个持久化数据库,这种自带一致性;一种是数据在内存中,需要自己用一定方案保证集群中多节点数据一致性。 下面讨论的针对的是内存中数据在集群中的同步。 1. CAP 理论 CAP定理主要关注的是分布式系统中的数据一致性、可用性和分区容错性,特别是在分布式集群
阅读全文
摘要:# 0. 配置中心简单交互 1. 编写自己的sdk:拉取配置、服务器端更新后客户端能感知到并且更新到本地 2. 和Springboot 做整合:(依赖Springcloud) (1). Springcloud 预留了做配置中心的接口,相当于是注入自己的PropertySourceLocator, S
阅读全文
摘要:自动配置文件如下: org.springframework.cloud.bootstrap.BootstrapConfiguration=\ com.demo.test.AlgConfigAutoConfiguration org.springframework.boot.autoconfigure
阅读全文
摘要:Spring 容器感知分为两部分。 第一部分是更新Environment、第二部分是注册到Spring 容器的对象感知。 1. 更新Environment 上文知道对于配置发生改变会调用到com.alibaba.cloud.nacos.refresh.NacosContextRefresher#re
阅读全文
摘要: 之前已经了解到Springcloud 环境对bootstrap.yml 加载的原理,也就是加载bootstrap的时机比较靠前。接下来简单研究下Springcloud环境中配置中心的加载以及动态更新原理。 简单研究下配置中心nacos客户端是如何拉取配置以及服务端配置更新后是如何通知客户端的
阅读全文
摘要:如果是Springcloud 项目,一般会将配置中心、注册中心等地址存入bootstrap.yml 中,同时将其他的配置存入配置中心。 也就是说bootstrap.yml 的读取会比较靠前。 下面研究其机制。 1. Springcloud 启动 Springcloud 环境启动过个中有一个重要的
阅读全文
摘要:简单研究下Zuul简单使用以及原理. 1. 使用 0. pom如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.
阅读全文
摘要:之前链路追踪的时候简单的有sleuth, 可以实现每个请求加一个traceId 和 spanId。其只是简单的对请求链路进行追踪,也基于slf4j的MDC 实现了日志增加输出链路信息,排错误的时候可以看到一些路由信息。 skywalking 比较全面,基于javaagent 探针技术,可以监测的信息
阅读全文
摘要:Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。其核心逻辑是路由转发+执行过滤器链。Gateway
阅读全文
摘要:简单研究下RestTemplate、 ribbon、 OpenFeign 关系 三者之间的关系。 1. RestTemplate RestTemplate 使用的是: spring-web 包下面的http 模块的http包中的API。 也就是Spring 自己封装的一套的httpclient AP
阅读全文
摘要:在复杂的分布式系统中全局ID生成器,通常需要满足如下需求: 1》全局唯一 2》趋势递增 3》单调递增 4》信息安全 5》含时间戳 同时需要满足高可用、低延迟、高QPS(一次生成几万个ID) 1. 一般通用方案研究 1. UUID生成 如下: UUID.randomUUID().toString()
阅读全文
摘要:Spring-boot-admin 是一个开源组织写的服务监控的项目,git 地址 https://github.com/codecentric/spring-boot-admin 主要功能: 1. 监测服务数量、服务对应的实例数量、以及每个服务上线时长 2. 每个实例的JVM信息、CPU以及进线程
阅读全文
摘要:部署一个EurekaServer非常的简单,大致分为下面几步: (1) 倒入spring-cloud-starter-netflix-eureka-server 包 (2) yml配置集群等信息 server: port: 7001 eureka: instance: hostname: eurek
阅读全文
摘要:之前对OpenFeign 了解到只用在接口上面打个注解,然后就可以通过内部调用去调用远程地址。研究完Feign生成对象以及代理对象的作用过程之后发现这个过程用到了Spring的好多东西,在之后的过程中可以借鉴这种思想。 查看Springboot项目一般从Enable入口,然后查看倒入的类。然后分析其
阅读全文
摘要:经过自己的测试发现客户端不加注解@EnableEurekaClient 也是可以的,这个注解在2.2.1版本中本身也没做任何的处理,如下: package org.springframework.cloud.netflix.eureka; import java.lang.annotation.Do
阅读全文
摘要:在Springcloud分布式项目中,服务与服务之间调用是非常常见的。有时候服务与服务间调用的时候涉及到用户的身份,比如当前登录的用户的身份获取与传递。 在之前boot单体应用前后端分离的时候,常见的两种方式,一种是基于session机制+nginx代理;另一种是基于token,也就是每个请求的he
阅读全文
摘要:在分布式开发过程中,分布式事务是必须面临的问题。因为分布式系统中,存在多个服务之间的调用。服务与服务之间存在事务问题,可能在某个服务调用链过程中某个服务发生异常导致数据不一致问题。 每个服务内部的数据一致性由本地事务控制,通常用@Transactional 来控制。但是服务拆分之后,多个服务协同完成
阅读全文
摘要:git地址: https://github.com/alibaba/Sentinel 中文文档: https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D sentinel实际和hystrix的作用一样,实现服务降级、熔断等。但是hyst
阅读全文
摘要:git地址: https://github.com/xuxueli/xxl-job 一个分布式的任务调度框架,官网文档写的非常详细,只是简单的记录下。 1. 部署admin项目 admin项目是一个可视化管理控制的项目。 1.下载 到码云克隆项目:http://gitee.com/xuxueli03
阅读全文