- 博客(56)
- 收藏
- 关注
转载 Apollo客户端
一、使用@EnableApolloConfig注解在启动类@Bean注入bean@SpringBootApplication@Configuration@EnableApolloConfigclass Demo2Application { public static void main(String[] args) { SpringApplicatio...
2020-01-14 16:37:39
309
转载 Apollo库表及逻辑结构
目录一、App、Cluster、Namespace、AppNamespace创建1. App、AppNamespace创建流程2.Cluster创建流程3. AppNamespace vs. Namespace二、Item、commit流程三、namespaceLock四、发布配置(release、releaseHistory、releaseMessage)...
2019-11-04 12:33:18
4323
转载 Kafka
发送消息的三种机制:1. 忘记并发送:适用于高吞吐量,配合参数acks=0,这样生产者不需要等待服务器的响应,以网络能支持的最大速度发送消息本质是一种异步,但不会获取返回结果。吞吐量最高2. 同步发送:适用于顺序发送,设置retries重试时间知道发送状态,会阻塞,只有当消息通过get返回future对象时,才会继续下一条消息的发送。 future = produc...
2019-10-28 21:04:56
317
转载 领域驱动设计DDD
目录一、几个概念1. 子域,核心子域、支撑子域、通用子域2. 限界上下文3. 问题空间和解决方案空间二、理解1. 意义2. DDD落地实现的相关知识1)In-Memory缓存2)事件驱动实现解耦、异步3)DCI架构3.六边形架构 + 面向对象设计4. 代码分层一、几个概念1. 子域,核心子域、支撑子域、通用子域2. 限界上下文含义:...
2019-08-08 21:02:54
321
转载 Spring之AOP
目录一、背景二、方案2.1 写死代码2.2 静态代理2.2.1 实现2.2.2 优点2.2.3 缺点2.3 动态代理2.3.1 JDK动态代理2.3.1.1 实现2.3.1.2 优点2.3.1.3 缺点2.3.2 CGLib动态代理2.4Spring AOP:前置增强、后置增强、环绕增强(编程式)2.4.1 前置增强Before Adv...
2019-07-28 17:53:03
104
转载 Apollo配置中心
目录一、why Apollo二、Apollo架构及流程1. 架构Apollo架构V1Apollo架构V2Apollo架构V3Apollo架构V4Apollo架构V52. 工作流程及源码分析1)配置实时推送源码分析2)客户端配置更新源码分析一、why Apollo配置中心候选:二、Apollo架构及流程1. 架构用户在配...
2019-07-12 10:45:38
292
转载 基础架构知识体系
《金字塔原理》《结构化思维》一、专业技能表1、基础知识计算基础计算机原理数据结构和常用算法操作系统:进程,线程,内存网络TCP/IP协议TCP/IP网络模型HTTP协议原理网络IO模型Socket网络编程2、编程语言javajava基础类库、异常JVM原理和调优《深入理解java虚拟机》《java性能优化权威指南》框架并...
2019-04-28 17:28:18
4382
转载 NacosSync
目录一、Eureka同步逻辑1.EurekaHttpClient从Client列表中随机选择2.NamingService从Client列表中随机选择3.EurekaHttpResponse中InstanceInfo同步4. 校验HTTP状态码5. registerInstance()同步服务注册6. 同步任务订阅到SpecialSyncEventBus二、z...
2019-04-26 18:46:47
2015
转载 EventBus
目录1. 创建EventBus2. 创建Listener3.把Listener注册到EventBus上:eventBus.register(listener)3.1 获得listener对应的所有订阅方法Multimap<Class<?>,EventSubscriber>3.1.1 findAllSubscribers(listener)3.1.2...
2019-04-24 20:18:20
1258
转载 Nacos数据一致性
目录一、Raft算法二、Nacos中Raft部分源码init()1. 获取Raft集群节点NamingProxy.getServers()获取集群节点NamingProxy.refreshSrvIfNeed()得到节点信息NamingProxy.refreshServerListFromDisk()获取集群节点信息2. Raft集群数据恢复RaftStore....
2019-04-15 21:22:28
10350
1
转载 SpringBoot监控(actuator)
参见:http://www.ityouknow.com/springboot/2018/02/06/spring-boot-actuator.html
2019-04-15 18:00:23
133
转载 Nacos寻址模式---DNS Filter
目录一、DNS工作原理1. 域名空间2. 工作流程二、基于DNS的服务发现1. 独立的DNS服务器2. DNS Filter模式3. DNS-F 客户端VIP(虚拟IP)一、DNS工作原理1. 域名空间DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提...
2019-04-10 11:13:05
6035
转载 Nacos回调机制
目录1.创建 ConfigService并实例化 ConfigService1)ConfigFactory.createConfigService()创建ConfigService2)NacosConfigService 的构造方法实例化ConfigService :HttpAgentClientWorker--checkConfigInfo():--LongPol...
2019-04-09 21:06:18
3161
转载 Raft
1.Consensus一致性它是指多个服务器在状态达成一致,但是在一个分布式系统中,因为各种意外可能,有的服务器可能会崩溃或变得不可靠,它就不能和其他服务器达成一致状态。这样就需要一种Consensus协议,一致性协议是为了确保容错性,也就是即使系统中有一两个服务器当机,也不会影响其处理过程。为了以容错方式达成一致,我们不可能要求所有服务器100%都达成一致状态,只要超过半数的大多数服务器达...
2019-04-08 18:36:30
439
转载 Ribbon
目录一、逻辑结构1.LoadBalancerClient接口2. LoadBalancerAutoConfiguration条件实现3.LoadBalancerInterceptor拦截器intercept()拦截HTTP请求->调用LoadBalancerClient.execute()RibbonLoadBalancerClient的execute()实...
2019-04-08 18:35:19
347
转载 Nacos服务注册与服务发现
目录一、服务注册流程分析 (基于Nacos-0.9.0版本分析)Step1:NacosServiceRegistry.register()NacosNamingService.registerInstance()1. 创建心跳信息2. 调用注册方法NamingProxy.registerService(String serviceName, Instance instanc...
2019-04-08 15:50:30
28892
1
转载 Nacos名字服务(Naming Service)
目录一、使用1. 服务提供方2. 服务消费方二、服务发现与注册1. 消费方服务发现(1)主动拉取服务NacosNamingService.getAllInstances()NacosNamingService.getServiceInfo(finalString serviceName,finalString clusters)NacosNamingSer...
2019-04-08 15:06:01
35369
5
转载 Nacos
目录架构名字服务(Naming Service)服务注册与发现Nacos core1. 回调机制2. 寻址机制3. 数据一致性服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理特性大图:要从功能特性,非功能特性,全面介绍我们要解的问题域的特性诉求 架构大图:通过清晰架构,让您快速进入 N...
2019-04-08 12:24:10
1952
转载 Zuul
Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器,是开源的微服务网关。在 SpringCloud 体系中,Zuul 担任着网关的角色,对发送到服务端的请求进行一些预处理,比如安全验证、动态路由、负载分配等。Zuul 的核心是 Filters,根据执行时期分为以下几类:PRE:这种过滤器在请求被路由之前调用 ROUTING:这种过滤器将请求路由到微服务 POST:这种...
2019-04-04 12:12:10
764
转载 Cluster分析(容错机制)
1. FailoverClusterInvoker失败自动切换在调用失败时,会自动切换 Invoker 进行重试。默认确配置下,Dubbo 会使用这个类作为缺省 Cluster Invoker。doInvoke()首先是获取重试次数,然后根据重试次数进行循环调用,失败后进行重试。 在 for 循环内,首先通过负载均衡组件选择一个 Invoker(每次都得到最新可用的Invoker列表...
2019-04-03 18:27:32
833
转载 LoadBalance分析
LoadBalance 中文意思为负载均衡,它的职责是将网络请求,或者其他形式的负载“均摊”到不同的机器上。LoadBanlance 与 外界交互的入口是 select方法。Dubbo架构中所有LoadBanlance子类都实现了AbstractLoadBalance;下面分析下比较入口方法select()以及重要的公共方法getWeight()。select()如果Invokers中...
2019-04-03 18:18:16
760
转载 Router分析
服务路由包含一条路由规则,路由规则决定了服务消费者的调用目标,即规定了服务消费者可调用哪些服务提供者。服务目录在刷新 Invoker 列表的过程中,会通过 Router 进行服务路由,筛选出符合路由规则的服务提供者。一、过程RegistryDirectory的notify方法中调用:toRouters():路由配置(url)->路由器实例(Router) setRouter...
2019-04-03 17:55:40
723
转载 Directory分析
Directory 是用于储存Invoker的服务目录,以下是继承体系图:Directory 与外界交互的点: list 接口:调用 doList 获取 Invoker 列表 根据 Router 的 getUrl 返回值为空与否,以及 runtime 参数决定是否进行服务路由 public List<Invoker<T>> list(Invo...
2019-04-03 17:30:49
256
转载 dubbo集群路由
服务引用创建Invoker时,RegistryProtocol中refer()方法调用的doRefer()方法通过ClusterInvoker将多个可以直接执行的Invoker放入Directory,实现了对外统一的一个Invoker(集群路由)Cluster用于生成ClusterInvoker流程:merge:Cluster将多个Invoker统一为一个Invoker list...
2019-04-03 17:21:21
158
转载 dubbo服务发布与引用
目录一、服务发布1. 入口ServiceBean.onApplicationEvent()2. 过程1. 配置检查afterPropertiesSet()export()->doExport()->doExportUrls()2. 创建InvokerdoExportUrls()->doExportUrlsFor1Protocol()->...
2019-04-02 16:38:40
294
转载 Filter
一.过滤器Filter1.filter的简介filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标资源访问前后进行逻辑处理作用:代码的抽取(可以对request设置编码,这样所有走过的servlet的编码都是统一的,没必要每一个都写)权限管理(在filter内部取出当前登录用户的角色,再看访问的资源,如果匹配则放行,不匹配则不放行)2.快速入门...
2019-04-02 11:34:57
163
转载 Eureka
1.基本原理上图是来自eureka的官方架构图,这是基于集群配置的eureka;- 处于不同节点的eureka通过Replicate进行数据同步- Application Service为服务提供者- Application Client为服务消费者- Make Remote Call完成一次服务调用服务启动后向Eureka注册,Eureka Server会将注册信息向...
2019-04-01 20:10:45
176
转载 TCP与HTTP
TCP是传输层协议,定义数据传输和连接方式的规范。握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。HTTP 超文本传送协议(Hypertext Transfer Protocol )是应用层协议,定义的是传输数据的内容的规范。HTTP协议中的数据是利用TCP协议传输的,特点是客户端发送的每次请求都需要服务器回送响应,它是TCP协议族中的一种,默认使用 TC...
2019-04-01 18:35:24
172
转载 dubbo
一、Duboo基本概念解释Dubbo是一种分布式服务框架。 Webservice也是一种服务框架,但是webservice并不是分布式的服务框架,他需要结合F5实现负载均衡。因此,dubbo除了可以提供服务之外,还可以实现软负载均衡。它还提供了两个功能Monitor 监控中心和调用中心。这两个是可选的,需要单独配置。主要特点:1. 透明化的远程调用(如同本地调用),无API。2. ...
2019-04-01 18:04:01
131
转载 CAP原理
在分布式系统中一致性、可用性、分区容错性不可能三个同时满足,先来解释以下这三个原则的意思:一致性:在分布式系统中的任意一个节点都会查询到相同的信息可用性:服务一直可用,而且是正常响应时间,好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。分区容错性:当分布式系统中一部分节点崩溃的时候,当前系统仍旧能够正常对外提供服务现在我们来证明以下为什么分布...
2019-04-01 15:50:20
164
原创 排序算法
稳定排序算法会将相等的元素值维持其相对次序。如果一个排序算法是稳定的,当有两个有相等的元素值 R 和 S,且在原本的列表中 R 出现在 S 之前,那么在排序过的列表中 R 也将会是在 S 之前。1.冒泡排序原理:相邻元素比较。仅适用于对于含有较少元素的数列进行排序。for(i:0~n-1) flag=true; for(j:0~n-i-1) if()...
2018-09-17 11:26:37
120
转载 java基础
一、泛型类型擦除:泛型只在源码中存在,在编译后的字节码中以原生类型存在,在适当的地方强制转换运行期间,同一类型的所有泛型相同:List<String>和List<Integer>都是List<E>。二、装箱与拆箱Integer i = new Integer(xxx)和Integer i =xxx;这两种方式的区别。1)第一种方式不会触发自...
2018-09-13 12:35:57
154
原创 JVM总结
一、内存区域 1.1.程序计数器功能:① 字节码控制程序执行② 确保多线程的线程轮流切换机制中线程的正确恢复1.2.java虚拟机栈方法执行时创建一个栈帧,存放:局部变量(编译期分配内存空间,包括基本数据类型、对象引用、returnAddress)、操作数、动态链接、方法出口等异常:① 栈的深度大于虚拟机允许深度 StackOverflowError② 动态...
2018-09-11 16:48:39
240
转载 REST
基于HTTP的REST系统的整个运行流程:以获取电商页面商品分类为例(https://www.cnblogs.com/loveis715/p/4669091.html ),在开始的时候,我们拿到了所有分类的列表。列表中的各个条目不仅仅包含了用户可以看到的分类名称等信息,更拥有一个额外的URL属性。在用户选择该列表中的一项时,页面逻辑将会向对应的URL发送一个请求,以获得该项目的详细信息。在这个详...
2018-08-21 16:58:38
114
翻译 spring cloud 测试的时候报 BeanCreationNotAllowedException: Error creating bean with name 'eurekaAutoServic
org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'eurekaAutoServiceRegistration': Singleton bean creation not allowed while singletons of this factory ...
2018-08-20 10:41:41
2955
1
转载 JVM
文章对JVM内存区域分布、JVM内存溢出分析、JVM垃圾回收算法/垃圾收集器、JVM性能调优工具及技巧、类加载等部分做了详细描述。 一、JVM内存区域Java虚拟机在运行时,会把内存空间分为若干个区域,根据《Java虚拟机规范(Java SE 7 版)》的规定,Java虚拟机所管理的内存区域分为如下部分:方法区、堆内存、虚拟机栈、本地方法栈、程序计数器。 1、方法区方法区主要用...
2018-08-18 23:22:25
226
转载 hash算法原理
一.概念哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值。哈希的思路很简单,如果所有的键都是整数,那么就可以使用一个简单的无序数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。这是对于简单的键的情况,我们将其扩展到可以处理更加复杂的类型的键。使用哈希查找有两个步骤:1. 使用哈希函数将被...
2018-08-16 17:29:04
3933
转载 排列组合
一 排列问题排列问题可以按输入数据分为两大类:输入数据有重复和无重复,又可以按输出数据分为两大类:输出数据有重复和无重复;而排列问题也偶尔会考非递归。首先提一下全排列的几种算法: 1——字典序法 2——递增进位数制法; 3——递减进位数制法 4——邻位交换法 5——n进制数法 6——递归生成法 7——循环移位法 8——回溯法由本文的目的是总结排列的各种...
2018-08-16 17:08:26
998
转载 双向链表
出处:http://blog.csdn.net/as02446418/article/details/47114711 最近重新复习了一些基础的数据结构,发觉自己好多已经淡忘了,索性重新捡起来以前的知识,今天笔者回顾了一下链表的知识,用JAVA实现了一个双向链表,下面来看代码:public class DoubleLinkedList { // 节点类Node pri...
2018-08-16 16:55:09
109
转载 spring中注解及原理
目录一、 IoC二、容器实现依赖注入注解的原理:一、 IoCIoC:控制反转:某一接口实现类的选择控制权从调用类中移除,转交给第三方决定,即由Spring容器借由Bean配置来进行控制。eg:由导演控制剧本、角色和演员的依赖关系,将剧本对演员的依赖解耦。那么通过控制反转(IOC)是怎么实现减少耦合的呢?总结网上的说法,从两个角度出发1、控制反转① 软件系统在...
2018-08-16 16:49:54
3800
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人