- 博客(10)
- 收藏
- 关注
原创 ZK核心原理
ZK是分布式协调工具,可以实现其他客户端集群的leader选举,分布式锁。ZK集群自身则是使用zab协议经行选举,以及数据同步一:分布式锁思路: 可以利用ZK节点的特性来实现独占锁。就是同级节点的唯一性。多个进程往ZK节点下创建一个相同名称的节点,只有一个能成功,其他都失败。创建失败的节点全部通过ZK的watch机制来监听ZK这个字节点的变化,一旦监听到子节点的删除事件,则再次触发所有的进程去写锁。 这种方式实现很简单,但是会产生惊群反应。简单来说,就是如果存在多个...
2020-10-07 18:47:24 1191
原创 基于zookeeper改造RPC框架(三)
有了远程通信以后,我们势必会考虑几个问题 1. 目标服务肯定会做扩容,扩容以后,客户端会带来一些变化 2. 客户端对于目标服务如何进行负载均衡 3. 客户端如何维护目标服务的地址信息 4. 服务端的服务状态变化,如何让客户端尽心感知于是我们引入ZK,作为我们的服务注册中心。服务端改造:将每个服务都注册进ZK,且ip信息以临时节点当时存储,这样,假设服务器挂掉了,客户端可以watch到节点的变化,更改维护的ip信息。再复制...
2020-09-20 21:55:03 1616
原创 spring+注解改造BIO RPC框架(二)
之前基于BIO实现的RPC框架,服务端是使用代理对象启用了一个sockerServer。其中,每发布一个服务,都要调用一次publish方法,拓展性非常差。于是,我们想到了用spring的
2020-09-20 12:56:57 128
原创 基于BIO实现简单的RPC框架(一)
实现RPC远程调用服务核心在于,网络传输和序列化,这里在学习中,简单的实现了一个RPC框架。首先,需要定义需要提供出去的二方包,包里定义了接口方法,以及需要的参数(类名,方法名,参数,通过反射执行)。服务端:引入该二方包,实现该接口,并发布服务供客户端调用。思路就是,发布的时候,启用sockerserver,根据ObjectInputstream反序列化客户端传过来的参数,得到class,method,params.反射执行方法,最后Objectoutputstream返回结果至客户端.
2020-09-05 23:14:26 165
原创 远程通信协议
我们每天都在用浏览器访问各种网站,作为用户来说,只需要需要输入一个网址并且正确跳转就行。但是作为程序员,看到的可能就是这个响应背后的整体流程。所以我想通过一个 http请求的整个流程来进行讲解通信的知识。负责域名解析的 DNS 服务 首先,用户访问一个域名,会经过 DNS 解析 DNS(Domain Name System),它和 HTTP 协议一样是位于应用层的协议,主要提供域名到IP 的解析服务。我们其实不用域名也可以访问目标主机的服务,但是 IP 本身不是那么容易记,所以使用域..
2020-09-05 22:44:57 148
原创 Redis(一)
计算机简单的构成分为 内存(线性地址抠空间),cpu,鼠标键盘打印机等IO设备。redis是一个典型的数据存储在内存条的。内存存储的是运行的程序和指令的数据,运行程序又分为,1.操作系统刚刚启动的内核程序kernel2.用户相关的内存(tomcat,redis等)先写一段简单的jedis代码。public static void main(String[] args) { Jedis jedis = new Jedis(IP, PORT); jedis.auth(.
2020-08-31 21:12:49 133
原创 springBoot开发优势
启动依赖和自动配置。 1、 启动依赖:传统的spring开发,需要自己手动的导入maven坐标,这样一是配置麻烦,二是版本若控制的不好,容易出现jar包冲突。而我们都知道,基础的springBoot开发,只需在pom中引入 <!-- 继承父包 --> <parent> <groupId>org.spring...
2018-10-23 11:04:46 1610
原创 部署到服务器,读文件位置
部署到服务器,读文件位置要用getResourceAsStream ,不然读不到。InputStream is= this.getClass().getClassLoader().getResourceAsStream(filePath);
2018-05-04 10:09:06 653
原创 并发编程的学习 Stop慎用
stop谨慎使用 假设有两个线程a写操作,b读操作,共用同一把锁,这时候写入一个User对象Id和name都为当前时间,由于是共用同一把锁,在进行写操作的时候是无法读的,但是可能出现这个一种情况,我初始化一个User对象,ID和name都为0,这时候我进行写操作,刚把ID更改为1,线程就被STOP了,释放了锁、这时候,b线程就能读到这条错误的数据,这中问题在平常开发过程中很不好排查,除非你特别确定
2018-01-18 10:19:39 226
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人