
分布式
文章平均质量分 85
enjoy编程
Stay hungry, stay foolish.(求知若饥,虚心若愚。)10+IT行业老兵,熟悉大数据处理,分布式编程, 喜欢使用java、python解决工作、生活中的问题
展开
-
从要解决的问题思考秒杀系统的设计
秒杀系统需要解决两个核心问题,一是并发读,一是并发写,对应到架构设计,就是高可用、一致性和高性能的要求。1 解决秒杀页面瞬时高并发访问1.1 秒杀页面动静分离动静分离的首要目的是将动态页面改造成适合缓存的静态页面。动静分离三步走:1、数据拆分;2、静态缓存;3、数据整合1.1.1 数据拆分主要从以下 2 个方面进行:用户身份信息用户身份信息包括登录状态以及登录画像等,相关要素可以单独拆分出来,通过动态请求进行获取;与之相关的广平推荐,如用户偏好、地域偏好等,同样可以通过异步方式进行加载原创 2021-07-30 16:47:28 · 375 阅读 · 0 评论 -
UDP发送、接收消息简单示例
UDP是将数据打成数据包向对方发送,只关系是否发送成功,而不关心是否接收成功,传输速度快,但是可靠性低最近在看nacos服务发现的源码,发现服务端在服务实例发生变化时,是通过UDP方式推送更新,所以写个简单的UDP发送、接收的示例。客户端在查询服务实例的时候,如果提供 udp 端口,则 server 会创建 udpClient,当服务实例发生变化时,是通过UDP方式推送更新import com.google.common.util.concurrent.ThreadFactoryBuilder;im原创 2021-07-28 15:39:47 · 1190 阅读 · 0 评论 -
RabbitMQ 和 Kafka选哪个?
不同的业务场景需要不同的解决方案,选错一个方案会严重影响你对软件的设计、开发、维护能力。RabbitMQ和Kafka在底层实现方面是有许多差异,需要根据你的特殊使用场景进行选择。本文截图使用的来自:https://zhuanlan.zhihu.com/p/1612244181 异步消息模式异步消息模式是解耦消息的生产和处理的一种解决方案。消息系统有两种消息模式:消息队列模式、发布/订阅模式1.1 消息队列模式消息队列用于解耦生产者和消费者。多个生产者可以向同一个消息队列发送消息;但是一个消息在被原创 2021-07-09 15:22:44 · 834 阅读 · 0 评论 -
Kerberos网络认证协议的理解
1. Kerberos1.1. 概念Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。1.2. 组成Kerberos的世界包含三个实体,其中KDC包含两个服务器(AS,原创 2021-07-01 14:35:17 · 1886 阅读 · 0 评论 -
并发编程--分布式锁的四种实现方式深度剖析
1. 分布式锁1.1. 产生的原因在单体应用中,应用都在一个JAVA进程中运行,基于JAVA提供的各种锁即可处理多线程并发处理的问题。但是随着业务发展的需要,原单体应用的系统被演化成分布式系统【由分布在不同机器上的不同JAVA进程组成】后,使原单体应用情况下的并发控制锁策略失效,为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题!目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告原创 2021-06-16 14:39:05 · 715 阅读 · 0 评论 -
源码解析-- DolphinScheduler-Worker负载均衡算法细述
海豚调度dolphinscheduler目前是Apache顶级项目,作为国内优秀的开源项目,它的架构设计理念会有很多值得我们学习和借鉴。海豚调度dolphinscheduler是分布式易扩展的可视化DAG工作流任务调度系统本文会包含如下内容:海豚调度提供的负载均衡算法 如何获取worker的负载信息(lowerweight算法使用)本篇文章适合人群:架构师、技术专家以及对任务调度非常感兴趣的高级工程师本文以海豚1.3.5的源代码,分析如何搭建调试环境。1. Worker提供的负载..原创 2021-03-04 09:12:59 · 2442 阅读 · 3 评论 -
运维--ssh免密配置脚本及同步文件脚本
1. 背景在部署分布式程序时,如spark、kafka、zookeeper、海豚调度系统时,需要在一台服务器上批量操作多台服务器时,如将安装包传到其它服务器、批量启停软件节点等。为了避免每次远程到其他服务器执行命令时都需要输入密码,就需要在该服务器对目标服务器配置免密码登录,若只需要以其中一台来管理整个集群,则只需要在一台服务器上配置对其他服务器的免密码登录即可,若希望使用多台来管理,则需要在这些服务器上都配置对其他服务器的免密码登录。2. 手工操作方式 假设需要在5台服务器上部署el..原创 2021-03-02 09:29:45 · 266 阅读 · 0 评论 -
JAVA Zero Copy的相关知识
介绍 java 的zero copy多在网络应用程序中使用。Java的libaries在linux和unix中支持zero copy,关键的api是java.nio.channel.FileChannel的transferTo(),transferFrom()方法。我们可以用这两个方法来把bytes直接从调用它的channel传输到另一个writable byte channel,中间不会使data经过应用程序,以便提高数据转移的效率。许多web应用都会向用户提供大量的静态内容,这意...原创 2021-03-02 09:30:35 · 128 阅读 · 0 评论 -
ACID与CAP定理
ACID:RMDB的4个基本要素ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库系统,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。原子性整个事务中的所有操作,要么全部完成,要么全...原创 2021-03-04 09:12:08 · 284 阅读 · 0 评论 -
理解Netty中的Zero-copy
Zero-copy概念 wiki上关于zero-copy的概念定义"Zero-copy" describes computer operations in which theCPUdoes not perform the task of copying data from onememoryarea to another. This is frequently used to save CPU cycles and memory bandwidth when transmitt...原创 2021-03-02 09:30:14 · 169 阅读 · 0 评论 -
基于 grpc 手撸一个 RPC 框架
1 手撸RPC框架的原因常见的 RPC 框架有: 比较知名的如阿里的Dubbo、google的gRPC、Go语言的rpcx。 但只有gRPC支持streaming模式。gRPC 是在任何环境中运行的现代开源高性能 RPC 框架,基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。为了理解如何基于gRPC框架,开发server/client程序,所以基于grpc手撸一个RPC框架源代码存放在原创 2021-03-01 15:11:43 · 268 阅读 · 0 评论