![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
微服务
文章平均质量分 68
岁月玲珑
厚积薄发
展开
-
三. 微服务源码阅读-actuator 源码
7. actuator 源码这个就是通过各种 endpoint 的注解来实现对各种监控信息的接口的调用 handlerMapping 对象,获取所有有@EndPoint 注解的对象org.springframework.boot.actuate.autoconfigure.endpoint.web.servlet.WebMvcEndpointManagementContextConfiguration@Bean // 装配handlerMapping的bean@ConditionalOnMissin原创 2022-03-12 12:53:44 · 548 阅读 · 0 评论 -
三. 微服务源码阅读-Config Center 源码
6. Config Center 源码分布式配置中心服务端org.springframework.cloud.config.server.config.ConfigServerAutoConfiguration@Configuration(proxyBeanMethods = false)@ConditionalOnBean(ConfigServerConfiguration.Marker.class)@EnableConfigurationProperties(ConfigServerPrope原创 2022-03-12 01:42:56 · 1135 阅读 · 0 评论 -
三. 微服务源码阅读-Zuul 源码
5. Zuul 源码对 zuul 工程的请求是有一个 controller 来接收的org.springframework.cloud.netflix.zuul.ZuulServerAutoConfiguration @Bean public ZuulController zuulController() { return new ZuulController(); }// 所有请求都会走到这个方法对应的 HandlerMapping @Bean public ZuulHandlerM原创 2022-03-12 01:01:34 · 319 阅读 · 0 评论 -
三. 微服务源码阅读-Feign 源码
4. Feign 源码开启Feign@EnableFeignClients(clients = {StudentService.class, TeacherServiceFeign.class})@Import(FeignClientsRegistrar.class)public @interface EnableFeignClients {FeignClientsRegistrarprivate void registerClientConfiguration(BeanDefinition原创 2022-03-11 00:56:26 · 236 阅读 · 0 评论 -
三. 微服务源码阅读-Hystrix 源码
3. Hystrix 源码1. 断路器开关@SpringBootApplication(scanBasePackages = {"len.hgy"})//注册到eureka@EnableEurekaClient//开启断路器功能`@EnableCircuitBreaker//开启feign支持,clients指定哪个类开启feign@EnableFeignClients(clients = {StudentService.class, TeacherServiceFeign.class})原创 2022-03-11 00:38:40 · 3786 阅读 · 1 评论 -
三. 微服务源码阅读-Ribbon 源码
2. Ribbon 源码1. spring.Factories# AutoConfigurationorg.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.springframework.cloud.client.CommonsClientAutoConfiguration,\org.springframework.cloud.client.discovery.composite.CompositeDiscovery原创 2022-03-08 21:39:41 · 574 阅读 · 0 评论 -
三. 微服务源码阅读-eureka源码
三. 微服务源码阅读1. Eureka 源码Eureka 客户端源码SPI 加载 spring.factoriesspring.factories## 自动配置实现类*AutoConfiguration.classorg.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.springframework.cloud.netflix.eureka.config.EurekaClientConfigServerAuto原创 2022-03-08 00:41:16 · 503 阅读 · 0 评论 -
二. 微服务的高级进阶
二. 微服务的高级进阶1. Ribbon API和负载均衡算法1. Ribbon APIRibbon 是一个独立的组件,是用来进行远程接口调用的,代码如下@Slf4j@Service@Scope(proxyMode = ScopedProxyMode.INTERFACES)public class UserServiceImpl implements UserService { public static String SERVIER_NAME = "micro-order";原创 2022-03-07 22:34:48 · 2556 阅读 · 2 评论 -
org.springframework.security.access.AccessDeniedException: Access is denied 的问题排查分析
报错: org.springframework.security.access.AccessDeniedException: Access is denied打断点找出报错的url这个过程比较麻烦,因为有些断点可能是不会报错的, 可以配合idea的条件断电进行排查我排查的会报错的有在异常出打断点,然后堆栈回看更快/actuator/actuator/info...配置忽略 protected void configure(HttpSecurity http) throws Exc原创 2022-02-28 01:12:06 · 2580 阅读 · 0 评论 -
一. 搭建简单的微服务工程
一. 搭建简单的微服务工程1. 从单体架构到微服务架构的演变我们最先接触的单体架构,整个系统就只有一个工程,打包往往是打成了 war 包,然后部署 到单一 tomcat 上面,这种就是单体架构,如图:单体架构优点1、结构简单,部署简单2、所需的硬件资源少3、节省成本缺点1、版本迭代慢,往往改动一个代码会影响全局2、不能满足一定并发的访问3、代码维护困难,所有代码在一个工程里面,存在被其他人修改的风险随着业务的拓展,公司的发展,单体架构慢慢的不能满足我们的需求,我们需要对架构进行 变动原创 2022-02-13 21:04:22 · 981 阅读 · 0 评论 -
四. 自定义启动器
四. 自定义启动器当需要把一些共用的 api 封装成 jar 包的时候,就可以尝试自定义启动 器来做。自定义启动器用到的就是 springboot 中的 SPI 原理,springboot 会去加载 META-INF/spring.factories 配置文件。加载 EnableAutoConfiguration 为 key 的所有类。利用这一点,我们也可以定义一个工程也会有这个文件。1、定义启动器核心工程工程结构custom-spring-boot-starter-autoconfigurer原创 2022-02-01 17:01:40 · 791 阅读 · 0 评论 -
三. SpringBoot原理
三. SpringBoot原理对于springboot来说,还有两块是比较有意思的,第一就是发现他内置了tomcat,接下来一快就是他对springmvc进行了无缝整合1. 内嵌tomcat首先来看下最简单的tomcat集成。pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.or原创 2022-01-29 23:02:37 · 570 阅读 · 0 评论 -
二. SpringBoot进阶
二. SpringBoot进阶Redis集成<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>配置# REDIS (RedisProperties)# Redis数据库索引(默认为0)spring.redis.datab原创 2022-01-28 00:40:47 · 789 阅读 · 0 评论 -
一. SpringBoot入门
一. SpringBoot入门SpringBoot介绍Spring Boot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run"。 我们为Spring平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始。多数Spring Boot应用需要很少的Spring配置解决的问题依赖太多了, 且存在版本问题配置太多了且每次都一样, 大部分工程, 配置每次都是一样的, 从一个地方拷贝到另外一个地方. 且Spring发展10多年, 各种配置版本太多, 对于很多程序员来说原创 2022-01-27 02:41:35 · 432 阅读 · 1 评论 -
Git配置多个SSH-Key
当有多个git账号时,比如:a. 一个gitee,用于公司内部的工作开发;b. 一个github,用于自己进行一些开发活动;生成一个公司用的SSH-Key···shcd .sshssh-keygen -t rsa -C ‘gitee@gitee.com’ -f ./gitee_id_rsa···注意:这里的 xxxxx@xxxxx.com 只是生成的 sshkey 的名称,并不约束或要求具体命> > 名为某个邮箱。现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是原创 2021-12-26 20:51:19 · 240 阅读 · 0 评论 -
【7. ZooKeeper常见面试题】
常见面试题ZAB 协议是什么? ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持崩溃恢复的原子广播协议。 ZAB 协议包括两种基本的模式:崩溃恢复和消息广播。 当整个 zookeeper 集群刚刚启动或者 Leader 服务器宕机、重启或者网络故障导致不存在过半的服务器与 Leader 服务器保持正常通信时,所有进程(服务器)进入崩溃恢复模式,首先选举产生新的 Leader 服务器,然后集群中 Follower 服务器开始与新的 Leader 服务器进行数据同步,当原创 2021-12-26 17:33:51 · 93 阅读 · 0 评论 -
【6. ZooKeeper集群源码解读】
集群源码解读集群模式数据同步总流程OBSERVINGFOLLOWINGLEADING领导选举领导选举初始化线程逻辑发送请求用到的线程接收请求用到的线程发送/接收总览领导选举算法原创 2021-12-26 17:32:30 · 540 阅读 · 0 评论 -
【5. Zookeeper 高级知识点】
Zookeeper 高级一致性协议概述 前面已经讨论过,在分布式环境下,有很多不确定性因素,故障随时都回发生,也讲了 CAP理论,BASE 理论 我们希望达到,在分布式环境下能搭建一个高可用的,且数据高一致性的服务,目标是这样, 但 CAP 理论告诉我们要达到这样的理想环境是不可能的。这三者最多完全满足 2 个。在这个前提下,P(分区容错性)是必然要满足的,因为毕竟是分布式,不能把所有的应用全放到一个服务器里面,这样服务器是吃不消的,而且也存在单点故障问题。所以,只能从一致性和可用性中找平原创 2021-12-26 17:27:58 · 12246 阅读 · 0 评论 -
【4. Zookeeper单节点源码解读】
单节点源码解读客户端源码总体流程启动客户端 zkCli.sh 文件里面的配置# use POSIX interface, symlink is followed automaticallyZOOBIN="${BASH_SOURCE-$0}"ZOOBIN="$(dirname "${ZOOBIN}")"ZOOBINDIR="$(cd "${ZOOBIN}"; pwd)"if [ -e "$ZOOBIN/../libexec/zkEnv.sh" ]; then . "$ZOOBINDIR原创 2021-12-26 17:21:49 · 674 阅读 · 0 评论 -
【3. Zookeeper的Java 客户端框架】
Java 客户端框架Zookeeper 原生客户端<?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" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.a原创 2021-12-25 00:41:22 · 458 阅读 · 0 评论 -
【2. zookeeper整体概览】
zookeeper整体概览Zk 的特性 这块是重点之中的重点,包括实战,都是建立在这基础之上的。其中数据模型和 watch 机制又是最最重要的zk 高级知识 客户端的简单使用能解决一些问题,方便查看信息,简单省事,但真正对于我们 java 架构师来说最重要的是 java 客户端,包括原生的zkclient 以及 curotor,最少要熟练使用其中的一种分布式系统是什么 分布式系统:一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递 进行通信和协调的系统 这原创 2021-12-23 23:25:56 · 321 阅读 · 0 评论 -
【1. zookeeper常用命令】
zookeeper常用命令启动zookeeper命令zkServer.sh start conf/zoo.cfg连接zookeeper命令zkCli.sh -server localhost:2181ZooKeeperMain无法kill -9 掉[root@localhost ~]# jps5137 Jps3891 ZooKeeperMain使用top命令查看僵尸进程[root@localhost ~]# toptop - 06:44:35 up 2:34, 2 users原创 2021-12-22 23:59:01 · 13766 阅读 · 0 评论 -
【Zookeeper centos8 + zookeeper 3.7.0 环境安装】
准备环境centos8 + jdk8 (linux环境已经提前搭建好了)zookeeper使用版本版本: zookeeper-3.7.0下载zkhttp://zookeeper.apache.orgApache ZooKeeperApache Downloads下载链接: https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz准备三台虚拟机192.168.71.1341原创 2021-12-22 22:01:06 · 6207 阅读 · 0 评论 -
【Zookeeper windows 环境安装】
Zookeeper windows 环境安装环境要求必须要有 jdk 环境 , 我使用jdk1.8安装 jdk略下载 Zookeeper在官网 http://zookeeper.apache.org/ 下载 zookeeper. 我下载的是zookeeper-3.7.0 版本https://zookeeper.apache.org/releases.html解压到目录解压 zookeeper-3.7.0 至 D:\zookeeper-3.7.0Zookeeper安装 ZooKee原创 2021-12-20 23:01:49 · 1758 阅读 · 0 评论