随笔分类 -  java

JAVA 转型
摘要:本文所说的session是单机版本的session, 事实上在当前的互联网实践中已经不太存在这种定义了。我们主要讨论的是其安全共享的实现,只从理论上来讨论,不必太过在意实用性问题。 1. session 的意义简说 大概就是一个会话的的定义,客户端有cookie记录,服务端session定义。用于确 阅读全文
posted @ 2020-05-16 22:16 阿牛20 阅读(1226) 评论(1) 推荐(0) 编辑
摘要:上篇我们讲了Dubbo中有一个非常本质和重要的功能,那就是服务的自动注册与发现,而这个功能是通过注册中心来实现的。上篇中使用zookeeper实现了注册中心的功能,同时了提了dubbo中有其他许多的注册中心的实现。 今天我们就来看看另一个注册中心的实现吧: redis 。 1. dubbo在 Red 阅读全文
posted @ 2020-05-08 18:01 阿牛20 阅读(5948) 评论(0) 推荐(1) 编辑
摘要:Dubbo中有一个非常本质和重要的功能,那就是服务的自动注册与发现,而这个功能是通过注册中心来实现的。而dubbo中考虑了外部许多的注册组件的实现,zk,redis,etcd,consul,eureka... 各自实现方式各有不同,但是对外表现都是一致的:都实现了 Registry 接口! 今天我们 阅读全文
posted @ 2020-05-05 17:37 阿牛20 阅读(1900) 评论(0) 推荐(1) 编辑
摘要:前两篇中,我们看到了dubbo在负载均衡和服务路由方面的实现,它为集群功能提供了必要的功能。 今天我们再来看另一个集群组件的实现:集群容错。 1. dubbo 集群容错简介 为了避免单点故障,现在的应用通常至少会部署在两台服务器上。对于一些负载比较高的服务,会部署更多的服务器。对于服务消费者来说,同 阅读全文
posted @ 2020-05-02 20:49 阿牛20 阅读(1977) 评论(0) 推荐(1) 编辑
摘要:上一篇中,我们介绍了dubbo的负载均衡实现,见识了几种常用的负载均衡算法。就单个功能而言,似乎dubbo并没有太多的突出之处。事实上,一个成功的产品不必每个地方都要打破常规。更重要的是其全局优化的架构设计,以及如何使用现有的优秀解决方案为己服务。 本篇将介绍另一种集群环境中的高可用实现:路由服务的 阅读全文
posted @ 2020-05-01 17:20 阿牛20 阅读(2766) 评论(0) 推荐(0) 编辑
摘要:dubbo作为分布式远程调用框架,要保证的点很多,比如:服务注册与发现、故障转移、高性能通信、负载均衡等等! 负载均衡的目的是为了特定场景下,能够将请求合理地平分到各服务实例上,以便发挥所有机器的叠加作用。主要考虑的点如:不要分配请求到挂掉的机器,性能越好的机器可以分配更多的请求。。。 一般负载均衡 阅读全文
posted @ 2020-04-19 22:10 阿牛20 阅读(4289) 评论(0) 推荐(2) 编辑
摘要:请求转发一般的原因为: 1. 该请求自身无法处理,需要转发给对应的服务器处理; 2. 为实现负载均衡,使用路由服务,选择目标实例进行转发; 在集群模式下,请求可以打到任何一台redis服务器上。然而并不是所有的服务器都会处理真正的请求,而是只有符合redis slot规则的实例才会处理真正的请求; 阅读全文
posted @ 2020-03-22 16:38 阿牛20 阅读(3051) 评论(0) 推荐(0) 编辑
摘要:JDBC 是java中的一个数据连接技术,它提供了统一的 API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据。 虽然目前JDBC已经基本被隐藏在了许多数据库框架之后,但是其底层原理从未变过。所以,多一点了解JDBC还是有意义的。 JDBC 之所以能提供统一的API,是基于对所有数 阅读全文
posted @ 2020-03-11 11:08 阿牛20 阅读(5165) 评论(0) 推荐(2) 编辑
摘要:业务最初的应用场景中,我们也许使用单机redis就可以应付业务要求,但并非一直可行。 比如单机的读写能力问题,单机的可用性问题,单机的数据安全性问题。这些都是许多互联网应用经常会遇到的问题,也基本上都有一套理论去解决它,只是百花齐放。 哨兵是Redis中解决高可用问题的解决方案之一,我们就一起来看看 阅读全文
posted @ 2020-03-08 19:35 阿牛20 阅读(2463) 评论(0) 推荐(0) 编辑
摘要:java中的所说的线程池,一般都是围绕着 ThreadPoolExecutor 来展开的。其他的实现基本都是基于它,或者模仿它的。所以只要理解 ThreadPoolExecutor, 就相当于完全理解了线程池的精髓。 其实要理解一个东西,一般地,我们最好是要抱着自己的疑问或者理解去的。否则,往往收获 阅读全文
posted @ 2020-02-05 23:25 阿牛20 阅读(5014) 评论(2) 推荐(4) 编辑
摘要:分布式应用,会存在各种问题。而要解决这些难题,除了要应用自己做一些监控埋点外,还应该有一些外围的系统进行主动探测,主动发现。 APM工具就是干这活的,SkyWalking 是国人开源的一款优秀的APM应用,已成为apache的顶级项目。 今天我们就来实践下 SkyWalking 下吧。 实践目标: 阅读全文
posted @ 2019-12-02 20:35 阿牛20 阅读(8011) 评论(0) 推荐(1) 编辑
摘要:MQ解耦了生产者和消费者,前提是有一个稳定强大的消息服务,我们只管与之通信即可。 所以,和MqServer通信是什么样的?难否? 0. 发送端demo 只需要设置下 nameServer, 就可以实现发送mq消息了。简单易用,是好产品的必备特征。 具体实现过程,且让我们深入一点了解。 1. 消息发送 阅读全文
posted @ 2019-12-01 16:46 阿牛20 阅读(1577) 评论(0) 推荐(0) 编辑
摘要:我们可以把loghub当作一个消息中间件来使用。如果能知道当前的消费进度,自然好了,否则消费情况一无所知,总是有点慌! loghub消费分两种情况,一是普通消费,二是消费组消费; 消费组消费,loghub服务端会记录消费情况,这时可以通过调用服务端API进行偏移信息查询。 普通消费则不同,需要自行维 阅读全文
posted @ 2019-11-29 18:06 阿牛20 阅读(1119) 评论(0) 推荐(0) 编辑
摘要:消息中间件是为解耦生产者和消费者的目的,三大服务点:解耦、异步、削峰。 现在的的互联网系统中,mq已经必备基础设施了,我们已明显感觉它的必要性与强大。然而,它的本质是啥?存储转发系统罢了! MQ有很多成熟产品,以RocketMQ作为切入点,成本较低。MQ主要角色为:生产者、消费者、消息服务端。 本文 阅读全文
posted @ 2019-11-29 09:39 阿牛20 阅读(1834) 评论(2) 推荐(0) 编辑
摘要:为充分利用机器性能,人们发明了多线程。但同时带来了线程安全问题,于是人们又发明了同步锁。 这个问题自然人人知道,但你真的了解同步锁吗?还是说你会用其中的上锁与解锁功能? 今天我们就一起来深入看同步锁的原理和实现吧! 一、同步锁的职责 同步锁的职责可以说就一个,限制资源的使用(线程安全从属)。 它一般 阅读全文
posted @ 2019-11-24 13:55 阿牛20 阅读(4652) 评论(0) 推荐(0) 编辑
摘要:因为ZK有watch机制,可以随时发现一些数据的变化,从而达到数据的及时性。 ZK的所有读操作都可以设置watch监视点: getData, getChildren, exists. 写操作则是不能设置监视点的。 监视有两种类型:数据监视点和子节点监视点。创建、删除或者设置znode都会触发这些监视 阅读全文
posted @ 2019-11-22 09:35 阿牛20 阅读(8651) 评论(0) 推荐(0) 编辑
摘要:使用 grafana+prometheus+jmx 作为普通的监控手段,是比较有用的。我之前的文章介绍了相应的实现办法。https://www.cnblogs.com/yougewe/p/11140129.html 但是,按照之前的实现,我们更多的只能是监控 单值型的数据,如请求量,tps 等等,对 阅读全文
posted @ 2019-11-19 18:34 阿牛20 阅读(4053) 评论(0) 推荐(1) 编辑
摘要:通过前些文章,我们已经完全从整体架构和数据接入方面理解了ZK的前情工作。接下来,我们就来看ZK的正式工作吧。 本文以 setData /a data 这个命令作为出发点,来观察zk是如何处理来自客户端的数据更新操作的吧! 首先,我们需要明确各个角色所担任的工作,然后才能更好的理解其工作流程。我们以 阅读全文
posted @ 2019-11-06 19:01 阿牛20 阅读(1548) 评论(0) 推荐(0) 编辑
摘要:通过前面几篇文章,我们可以从整体上看到zk是如何处理网络数据的宏观架构。 本文我们从细节着手,看一下一个tcp的包是如何转换到内部的数据流处理的。 一、监听用户请求socket 基于NIO的端口监听,获取tcp数据流。 二、从连接中解析数据 接上一个nio提交过来的连接后,由 SelectorThr 阅读全文
posted @ 2019-10-29 12:07 阿牛20 阅读(1147) 评论(0) 推荐(0) 编辑
摘要:我们知道,zk就是一个个处理链组成的。 但是,这些处理链是在什么创建的呢? ZooKeeper 中有三种角色的服务节点存在: Leader, Follower, Observer . 而每个服务节点的承担的任务是不一样的,所以处理任务的逻辑是不一样的。而在ZK中,则是巧妙的通过责任链模式将各自节点的 阅读全文
posted @ 2019-10-25 18:54 阿牛20 阅读(1400) 评论(0) 推荐(0) 编辑