• Java架构
文章平均质量分 92
分享架构师相关的文章,从零进行体系开始到深入
同时组织了一个Java架构师开源学习小组,有兴趣的可以添加微信:kylin19910808
菜鸟编程98K
毕业于社会大学,逆天而行。
展开
-
Zookeeper之Watcher机制相关源码分析
Zookeeper Watcher相关源码一、使用原生zk包实现watcher机制直接去看代码吧:https://gitee.com/kylin1991_admin/help-s/blob/master/zookeeper-h/src/test/java/org/example/zookeeper/NativeWatcherDemoTest.java二、实现循环watcher机制直接去...原创 2020-04-25 18:32:08 · 263 阅读 · 0 评论 -
Zookeeper之选举源码分析阅读
文章目录Zookeeper 选举相关源码一、选举阅读前了解1、选举相关参数a、服务器ID(myid)b、zxid事务IDc、逻辑始终(epoch-logicalclock)d、选举状态二、选举逻辑1、服务启动时的 leader 选举2、运行过程中的选举三、选举相关源码1、Leader选举的源码分析2、zkServer 服务启动逻辑3、选举流程分析4、投票的网络通信流程5、选举完成之后的处理逻辑Z...原创 2020-04-25 18:30:30 · 576 阅读 · 0 评论 -
Zookeeper之数据同步原理
Zookeeper数据同步zk通过三种不同的 集群角色来组成整个高性能集群,在zk中,客户端会随机连接到zk集群中的一个节点,如果是读请求,就直接从当前节点中读取数据,如果是写请求,那么请求会被转发给leader提交事务,然后leader会广播事务,只要超过半数节点写入成功,那么写请求就会被提交(类2PC事务,2PC是全数节点ok)问题:集群的leader节点如何选举出来?lea...原创 2020-04-25 18:28:43 · 5499 阅读 · 0 评论 -
Zookeeper之Java-API操作zk
Java访问Zookeeper篇比较常用的 Java 客户端有 zkclient、curator。一、Curator框架由于 Curaotr 对于 zookeeper 的抽象层次比较高,简化了zookeeper 客户端的开发量。使得 curator 逐步被广泛应用。封装 zookeeper client 与 zookeeper server 之间的连接处理提供了一套 fluen...原创 2020-04-25 18:24:44 · 290 阅读 · 0 评论 -
Zookeeper之功能篇章
文章目录一、集群角色二、数据模型1、持久节点(PERSISTENT)2、持久有序节点(PERSISTENT_SEQUENTIAL)3、临时节点(EPHEMERAL)4、临时有序节点(EPHEMERAL)三、会话四、Stat状态信息五、版本六、Watcher七、ACL1、特点2、ACL Permissions3、ACL Schemes 、ID4、权限相关命令5、zkCli操作示例a、wordb、ip...原创 2020-04-25 18:22:12 · 641 阅读 · 0 评论 -
Zookeeper之设计原理
文章目录Zookeeper之设计原理一、分布式一致性问题二、分布式锁锁服务三、Zookeeper设计猜想1、防止单点故障Leader 角色Follower角色2、数据同步关于2PC提交阶段一:提交事务请求(投票)阶段二:执行事务提交Observer角色3、leader选举四、Zookeeper的安装部署1、zk的可视化客户端2、简单脚本操作Zookeeper之设计原理Apache ZooKe...原创 2020-04-25 18:10:22 · 465 阅读 · 0 评论 -
Redis之实现使用及解决方案
文章目录1、客户端a、手写客户端b、Jedis单机模式连接分片模式连接哨兵模式连接集群模式连接pipeline操作jedis实现分布式锁jedis操作事务jedis操作monitorjedis操作发布/订阅jedis用lua实现限流c、Luttece实战操作d、Redisson连接操作2、数据一致性方案3、高并发问题a、热点数据发现b、缓存雪崩c、缓存穿透1、客户端客户端根Redis之间使用...原创 2020-04-19 12:56:14 · 773 阅读 · 0 评论 -
Redis之分布式搭建及使用快速入门
文章目录1、为什么需要用redis集群2、主从复制a、主从复制配置3、可用性保证之哨兵机制(Sentinel)4、redis分布式方案a、客户端Shardingb、代理Proxy之Twemproxyc、代理Proxy之Codisd、Redis Clustere、分片方案总结1、为什么需要用redis集群老套路,性能、扩展、可用性。下面几个说法就当故事听听了。性能第一个是因为Redis...原创 2020-04-17 12:03:48 · 2936 阅读 · 0 评论 -
Redis之高级特性及原理快速入门
文章目录1、发布订阅模式2、Redis事务3、Lua脚本a、使用的好处b、在Redis中调用Lua脚本c、在Lua中调用Redis脚本d、用Lua脚本-限流e、Lua脚本缓存f、脚本超时4、Redis效率a、效率测试b、为什么这么快?5、内存回收a、过期策略b、淘汰策略6、持久化机制a、RDBb、AOFc、RDB和AOF比较1、发布订阅模式发布订阅(pub/sub) 是一种消息通讯模式:r...原创 2020-04-17 12:02:25 · 617 阅读 · 0 评论 -
Redis之常用的十几种使用场景
四、使用场景文章目录四、使用场景1、缓存2、数据共享分布式3、分布式锁4、全局ID5、计数器6、限流7、位统计8、购物车9、用户消息时间线timeline10、消息队列11、抽奖12、点赞、签到、打卡13、商品标签14、商品筛选15、用户关注、推荐模型16、排行榜1、缓存String类型例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。2、...原创 2020-04-17 12:01:00 · 15406 阅读 · 1 评论 -
使用Jedis客户端快速操作redis
文章目录1、加入相关maven依赖2、Jedis操作1、加入相关maven依赖<!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency> <groupId>redis.clients</groupId> <artifactId>...原创 2020-04-17 11:59:01 · 178 阅读 · 0 评论 -
Redis之附加功能介绍/使用
文章目录1、发布订阅-初识2、主从复制-初识3、持久化-初识4、脚本(存储过程、stored procedure)-初识5、安全6、性能测试7、管道技术8、分区1、发布订阅-初识发布订阅(pub/sub) 是一种消息通讯模式:redis客户端可以订阅任意数量的频道,channel的消息是不会持久化的客户端订一个或多个频道(频道可以不存在)支持通配符subscribe test t...原创 2020-04-17 11:57:11 · 293 阅读 · 0 评论 -
Redis之安装/操作快速入门
一、Redis的安装配置1、redis介绍一种使用内存存储的非关系型数据库2、支持的数据结构类型类型简介结构存储的值结构的读写能力字符串(STRING)二进制安全可以是字符串、整数、或浮点数(Memcached相同)对整个字符串或者字符串的其中一部分的其中一部分执行操作;对整数和浮点数执行自增或自减操作;列表(LIST)链表(双向链表)一个链表,...原创 2020-04-12 15:22:09 · 388 阅读 · 0 评论 -
Netty之初体验
1、Buffer、Selector、Channel 三件套NIO 三件套Selector: 调度器,总控中心,一个主线程去分配各种work线程工作,宇宙的总控中心。Buffer:缓冲区,相当于数据容器对象,读写数据都是放入其中,可以理解就是可以装载不同世界的物品的Channel:通道,可以通过它把数据写入或读取到缓存区,可以理解就是一个和异界连接的通道快速上手地址- API 使用和...原创 2020-04-10 11:45:03 · 176 阅读 · 0 评论 -
Netty之概念扫盲篇
文章目录一、概念扫盲篇1、为什么学习netty?2、Netty 到底给我们解决什么问题?3、Netty基本的作用和应用场景4、目前流程的多路复用IO模型5、Netty 采用 NIO 而非 AIO 的理由6、Reactor反应堆概念7、Netty高效并发编程的的主要体现如下8、序列化性能的关键因素总结9、Netty的功能和特性一、概念扫盲篇1、为什么学习netty? Spring5 底层用N...原创 2020-04-10 11:38:51 · 509 阅读 · 0 评论 -
如何把接口加入到Spring容器(任何类/接口都可以用这个方式,例如动态代理)
文章目录问题缘由快速开始1、加入maven包2、写一个自己的FactoryBean3、干预BeanDefinition上面已经完成,可以直接使用了下面就是加入自己的注解,不过和上面没多大关系了1、自定义Autowired注解问题缘由起因是设计一款RPC框架,但是客户端由于只有接口,没有实现,所以加入Spring不能实现。因此和分享小组成员讨论研究,最后得到自己想要的是什么。快速开始1、...原创 2020-04-05 10:26:50 · 2587 阅读 · 0 评论 -
徒手打造 - RPC远程通讯框架v1+v2
手写RPC框架V1Api.jar1、写一个IHelloService接口,类似dubbopublic interface IHelloService { String sayHello(String context); }2、一个RpcRequest请求模型@Datapublic class RpcRequest implements Serializable { ...原创 2020-04-03 23:15:49 · 208 阅读 · 0 评论 -
徒手打造 - RPC远程通讯框架v1
手写RPC框架V1Api.jar1、写一个IHelloService接口,类似dubbopublic interface IHelloService { String sayHello(String context); }2、一个RpcRequest请求模型@Datapublic class RpcRequest implements Serializable { p...原创 2020-04-03 09:53:46 · 195 阅读 · 0 评论 -
简易之手写序列化和反序列化框架
序列化和反序列化1、概念个人理解,序列化和反序列化就是一种压缩和解压的过程。压缩和解压讲究一个速度和大小2、translate禁止序列化3、破坏translatejava 和file 、javaXML 都可以通过重写私有readObject和writeObject进行破坏translate修饰其他框架默认不会,例如XStram、FastJson、Protobuf等默认不会...原创 2020-04-03 05:13:53 · 1073 阅读 · 0 评论 -
http 和 https原理分析
http 和 https 原理分析1、http和https的区别在原有 http和tcp中间建立了一个ssl/tls2、https的原理分成2块,一块是准备工作:服务器生成公私钥,CA机构生成CA证书,客户端获取CA证书一块是建立连接:主要是处理CA证书的合法性,最后生成一个随机对称密钥,然后基于此进行通信扩展:http/.0默认使用短连接。http/1.1默认使用长连接...原创 2020-03-31 21:07:00 · 361 阅读 · 0 评论 -
远程通讯协议概念
以图镇压 (引用极客时间)1、DNS域名解析CDNContext Delivery Network 表示内容分发网络 ,很多大型望着那,都会引入CDN来加速静态内容的访问。CDN就是一种网络缓存技术,能够把一些相对"稳定"的资源放到距离最终用户较近的地方,一般会把一些静态文件(图片、脚本、静态页面)放入到CDN中。优点:解决广域网的带宽的消耗;提升用户的访问速度2、...原创 2020-03-28 21:29:32 · 263 阅读 · 0 评论 -
分布式架构演变
架构演变用户驱动架构演变1、一个请求访问的性能瓶颈?CPU/文件IO/内存/网络IO2、性能提升的方式?水平扩容和垂直扩容演进案例过程我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。该系统具备的功能:用户模块:用户注册和管理商品模块:商品展示和管理交易模块:创建交易和管理阶段一、单机构建网站网站的初期,我们经常会在单机...原创 2020-03-28 21:25:49 · 229 阅读 · 0 评论