Java架构设计与分布式
老周聊架构
微信公众号:老周聊架构
展开
-
远程调用 Dubbo 与 Feign 的区别
一、相同点Dubbo 与 Feign 都依赖注册中心、负载均衡。二、区别1、协议Dubbo:支持多传输协议(Dubbo、Rmi、http、redis等等),可以根据业务场景选择最佳的方式。非常灵活。默认的Dubbo协议:利用Netty,TCP传输,单一、异步、长连接,适合数据量小、高并发和服务提供者远远少于消费者的场景。Feign:基于Http传输协议,短连接,不适合高并发的访问。2、负载均衡Dubbo:支持4种算法(随机、轮询、活跃度、Hash一致性),而且算法里面引入权重的概原创 2020-09-23 22:02:21 · 34179 阅读 · 15 评论 -
eureka、nacos、consul的区别
1、配置中心配置中心eureka不支持nacos支持 用起来简单,符合springBoot的命名风格,支持动态刷新consul支持 但用起来偏麻烦,不太符合springBoot框架的命名风格,支持动态刷新2、注册中心eurekanacosconsul应用内/外直接集成到应用中,依赖于应用自身完成服务的注册与发现属于外部应用,侵入性小属于外部应用,侵入性小ACP原则遵循AP(可用性+分离容忍)原则,有较强的可用性,服务注册快原创 2020-09-22 23:27:07 · 4342 阅读 · 0 评论 -
分布式架构下基于Redisson实现Redis分布式锁
一、前言作为后台开发,相信大家都对 Redis 并不陌生了。Redis 有三个客户端 Jedis、Redisson、Lettuce。也就是提供基本的驱动来连接操作 Redis 数据库的。我们先简单介绍下这几个客户端的异同。Jedis:是Redis 的 Java 实现客户端,提供了比较全面的 Redis 命令的支持。Redisson:实现了分布式和可扩展的 Java 数据结构。Lettuc...原创 2020-03-10 00:17:54 · 817 阅读 · 0 评论 -
分布式集群下如何做到唯一序列号
系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。一、需求全局唯一支持高并发能够体现一定属性高可靠,容错单点故障高性能二、业内方案1、 数据库自增长序列或字段最常见的方式。利用数据库,全数据库唯一。优点:1)...原创 2019-03-27 23:43:37 · 7040 阅读 · 2 评论 -
用java自己实现一个LRU
LRU 原理LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。实现一最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:新数据插入到链表头部;每当缓存命中(即缓存数据被访问),则将数据移到链表头部;当链表满的时候,将链表尾部的数据丢弃。分析【命中率】...原创 2019-03-22 00:06:29 · 2125 阅读 · 0 评论