深入理解 Java 线程池的实现原理 文章目录1 线程状态2 线程池2.1 线程池的作用2.2 线程池的实现1 线程状态既然要说线程,我们就先来了解一下线程的几种状态: public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED;...
使用 Apollo 为静态变量赋值的方法 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。但是,在使用 Apollo 的时候,我们可能会遇到这样的场景:在类中,想要为静态属性赋值。我们且不考虑什么时候会出现这样的需求,仅考虑如果有这样的需求,我们应该怎么处理?实际上,Apollo 仅支持直接为非静态属性赋值,因此当我们有这样的需求的时候,就需要我们变通一下,通过一些小技巧,来达成我们的目的了。
Spring Boot 自定义 Swagger2 请求 URL 路径的两种方法 文章目录前言方法一:修改应用根路径方法二:引入 Swagger2 前端代码总结前言首先,把 Swagger2 的依赖引进来:<!--swagger 版本--><swagger.version>2.7.0</swagger.version><!--swagger--><dependency> <groupId>io.springfox</groupId> <artifactId>spr
详述 IntelliJ IDEA 遇到 Maven 项目 pom.xml 文件没有识别的解决方法 文章目录问题现象解决方法问题现象有的时候,我们可能会遇到 IDEA 没有识别 Maven 项目pom.xml的问题,其表现出来的现象就是:究其原因,就是 IDEA 把pom.xml文件当成了普通的xml格式文件。解决方法这个问题的解决方法比较简单,IDEA 已经提供了相应的功能。如上图所示,鼠标右键点击pom.xml文件,呼出菜单栏,点击上图标记出来的Add as Maven Project按钮即可。...
Spring Cloud 优雅下线以及灰度发布 文章目录前言优雅下线常见的下线方式优雅的下线方式灰度发布蓝绿部署滚动部署金丝雀部署前言在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。如果在我们升级服务的时候,会造成一段时间内的服务不可用,这就是不够优雅的。那什么是优雅的呢?主要就是指在服务升级的时候,不中断整个服务,让用户无感知,进而不会影响用户的体验,这就是优雅的。实际上,优雅下线是目标,而不是手段,它是一个相对的概念,例如kill PID和kill -9 PID都是暴力杀死服务,相对于kill -9 PID来
带你了解「美团、百度和滴滴」的分布式 ID 生成系统 文章目录美团背景常见方法介绍UUID类snowflake方案数据库生成Leaf 方案实现Leaf-segment 数据库方案双 buffer 优化Leaf 高可用容灾Leaf-snowflake 方案弱依赖 ZooKeeper解决时钟问题Leaf 现状百度snowflakeDefaultUidGeneratordelta secondsworker idsequence小结CachedUidGeneratorRingBuffer Of FlagRingBuffer Of UIDworker id初始化取值小
饿了么交易系统 5 年演化史 作者介绍:杨凡,花名挽晴,饿了么高级架构师,2014 年加入饿了么,2018 年随饿了么被阿里巴巴收购一同加入阿里巴巴,4 年团队管理经验,4 年主要从事饿了么交易系统建设,也曾负责过饿了么账号、评价、IM、履约交付等系统。2014年12月加入饿了么,当时参与后台系统的研发(Walis+Javis=>Walle),主要面向客服和BD。2015年5月开始接触订单系统的研发,7月负责订单研发组;度过单体应用到服务化这个阶段。2016年初搭建订单的测试团队,订单拆分为正逆向后,主要负责正向和交付部.
新一代垃圾回收器 ZGC 的探索与实践 文章目录GC之痛ZGC(The Z Garbage Collector)是 JDK 11 中推出的一款低延迟垃圾回收器,它的设计目标包括:停顿时间不超过 10ms;停顿时间不会随着堆的大小,或者活跃对象的大小而增加;支持 8MB ~ 4TB 级别的堆(未来支持 16TB)。从设计目标来看,我们知道 ZGC 适用于大内存低延迟服务的内存管理和回收。本文主要介绍 ZGC 在低延时场景中的应用和卓越表现,文章内容主要分为四部分:GC 之痛:介绍实际业务中遇到的 GC 痛点,并分析 CMS 收集器
详述 Redis 选择单线程模型的原因以及 I/O 多路复用 文章目录几种 I/O 模型Blocking I/OI/O 多路复用Reactor 设计模式I/O 多路复用模块封装 select 函数封装 epoll 函数子模块的选择总结最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适合阅读和分析,其中 I/O 多路复用(mutiplexing)部分的实现非常干净和优雅,在这里想对这部分的内容进行简单的整理。几种 I/O 模型为什么 Redis 中要使用 I/O 多路复用这种技术呢?首先,Redis 是跑在单线程中的,
带你了解 Kubernetes 的二三事儿 文章目录一、Docker 的管理痛点二、什么是 K8s ?三、云架构 & 云原生云和 K8s 是什么关系常见几类云架构云原生四、K8s 架构原理K8s 架构Master 节点Node 节点五、K8s 核心组件K8s 组件Pod 是什么?Pod 到底用来干什么?Web 服务集群如何实现?Pod 底层网络,数据存储是如何进行的?ReplicaSet 副本控制器Deployment 部署对象MySQL 使用容器化部署,存在什么样的问题?StatefulSet六、K8s 的服务注册与发现Pod 的结构是怎样
重复读取 HttpServletRequest 中 InputStream 的方法 开篇第一句,大家是否遇到过这样的问题:通过httpServletRequest.getInputStream()获取InputStream之后,遇到Required request body is missing错误?如果你回答“是”的话,那你就来对了。在本文中,我们就来讨论一下,问题 1:为什么InputStream无法重复读取?问题 2:如何重复读取HttpServletRequest中的InputStream?回答第一个问题对于第一个问题,“为什么InputStream无法重复读取
浅谈基于 Git 的版本控制工作流 博主说:本文借鉴了很多「 DRPrincess」博主的文章内容,在此对其表示感谢。文章目录版本控制简史什么是工作流?Git Flow主要分支辅助分支Merge 加上 --no-ff 参数示意图GitHub Flow模型说明示意图特色功能PR问题追踪GitLab FlowGit Flow & GitHub Flow 的瑕疵GitLab Flow 解决方案版本的延迟发布 Prodution Branch不同环境的部署 Environment Branches & Upstream Firs.
面试题:Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点? 文章目录面试题面试官心理分析面试题剖析为什么使用消息队列?消息队列有什么优缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?面试题为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?面试官心理分析其实面试官主要是想看看:第一,你知不知道你们系统里为什么要用消息队列这个东西?不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。
详述 Java NIO 以及 Socket 处理粘包和断包方法 NIO 是 New I/O 的简称,是 JDK 1.4 新增的功能,之所以称其为 New I/O,原因在于它相对于之前的 I/O 类库是新增的。由于之前老的 I/O 类库是阻塞 I/O,New I/O 类库的目标就是要让 Java 支持非阻塞 I/O,所以也有很多人喜欢称其为 Non-block I/O,即非阻塞 I/O。NIO 的文件读写设计颠覆了传统 IO 的设计,采用『通道』+『缓存区』使得新式的 I/O 操作直接面向缓存区。NIO 弥补了原来同步阻塞 I/O 的不足,它在标准 Java 代码中提
在使用 Spring Boot 的过程中,你可能不太知道的点? 如题,本文主要罗列一些在使用 Spring Boot 的过程中,大家可能不太知道的点:Spring Boot 的精髓:自动配置、起步依赖、Actuator 和命令行界面。Spring Initializr:Click HERE,Spring Boot 快速搭建网站。@SpringBootApplication注解开启了 Spring 组件扫描和 Spring Boot 的主动配置功能。org.springframework.boot:spring-boot-maven-plugin构建插件的主要功
使用 VisualVM 和 JProfiler 进行性能分析及调优 文章目录概述概述开发大型 Java 应用程序的过程中难免遇到内存泄露、性能瓶颈等问题,比如文件、网络、数据库的连接未释放,未优化的算法等。随着应用程序的持续运行,可能会造成整个系统运行效率下降,严重的则会造成系统崩溃。为了找出程序中隐藏的这些问题,在项目开发后期往往会使用性能分析工具来对应用程序的性能进行分析和优化。VisualVM 是一款免费的性能分析工具。它通过 jvmstat、JMX、SA(Serviceability Agent)以及 Attach API 等多种方式从程序运行时获得实时数据,
设置 Linux 别名命令 alias 永久生效的方法 直入主题,编辑.bashrc文件,该文件主要用于保存一些个性化的设置,如命令别名、路径等:vim .bashrc执行上述命令后,如下图所示:如上图所示,我们可以在User specific aliases and functions这一行下面新增我们的个性化配置,如设置别名:alias golog='cd /apps/srv/instance/csdn-core/logs'配置示例,如下图所示:如上图所示,新增golog配置后,执行:wq命令保存文件。保存文件后,在执行source
使用 Redis 统计网站 UV 的方法 文章目录前言思路HyperLogLog使用 Redis 命令操作使用 Java 代码操作HyperLogLog 使用原理及特点使用 Java 代码实现 HyperLogLog小结前言网页 UV(Unique Visitor)就是指网站的独立用户访问量 Unique Visitor。即相同用户的多次访问需要去重。思路一想到 UV 去重,我猜大家都想到了 Set 集合类。使用Set集合是一个不错的办法,Set里面存储用户的id。每一个用户访问页面的时候,我们直接把id存入Set,最终获取Set的si
Kafka:高吞吐量、消息精确一次语义以及保证消息顺序 文章目录前言高吞吐量顺序读写Page Cache零拷贝分区分段+索引批量读写批量压缩消息精确一次语义消息系统语义概述必须被处理的故障Apache Kafka 中的精确一次语义幂等性:每个分区中精确一次且有序事务:跨分区原子写入真实案例:Apache Kafka 中的精确一次流处理保证消息顺序前言Kafka 是最初由 Linkedin 公司开发,是一个分布式、支持分区的、多副本的,基于 Zookeeper 协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于 Hado
详述 Java 并发编程中 CAS 以及 AQS 的实现原理 版权声明:本文的内容大都来自于「vioao」的博文,略作修改。文章目录CAS什么是 CAS?CAS 的应用CAS 的缺点AQS什么是 AQS?AQS 的应用AQS 实现原理浅析CAS什么是 CAS?CAS(Compare And Swap),即比较并交换,是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS 操作包含三个操作数——内存位置V、预期原值A和新值B。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值;否则,处理器不做任何操作。无论哪种情况,它都会在 CAS .
详述 ThreadLocal 的实现原理及其使用方法 文章目录实现原理ThreadLocal 的 get 方法ThreadLocal 的 set 方法ThreadLocal 的特性使用方法Threadlocal是一个线程内部的存储类,可以在指定线程内存储数据,并且该数据只有指定线程能够获取到,其官方解释如下:/** * This class provides thread-local variables. These variables differ from * their normal counterparts in that each thre
详述 synchronized 和 volatile 的实现原理以及两者的区别 版权声明:本文的内容大都来自于「zejian_」的博文,略作修改。文章目录线程安全synchronized使用方式作用于实例方法作用于静态方法作用于同步代码块实现原理同步代码块同步方法其他可能需要了解的关键点可重入性线程中断等待唤醒机制volatile内存可见性禁止指令重排优化synchronized 和 volatile 的区别线程安全在并发编程中,线程安全是我们最需要关心的问题,而导致并发问题的原因,主要是:存在共享数据;并且,存在多条线程共同操作共享数据。因此,为了解决这个问题,我.
出现 curl: (51) SSL: no alternative certificate subject name matches target host name 错误的原因及解决方法 ## 问题描述如上图所示,通过`curl`发起 POST 请求,出现 SSL 51 异常:> curl: (51) SSL: no alternative certificate subject name matches target host name通过异常描述,我们知道,该错误为:没有与目标主机名匹配的证书。
详述 MySQL 中 InnoDB 的索引结构以及使用 B+ 树实现索引的原因 文章目录表空间在 MySQL 的众多存储引擎中,InnoDB 是最常用的存储引擎,也是 MySQL 现阶段唯一免费支持事务机制的存储引擎。在本文中,我们以 InnoDB 为例,介绍 MySQL 的索引结构以及其使用 B+ 树实现索引的原因。表空间首先,来了解一下 MySQL 的表空间。中的所有数据被存储在一个空间内,称之为表空间,表空间内部又可以分为段(segment)、区(extent)、页(page)、行(row),逻辑结构如下图:参考资料:MySQL存储引擎MyISAM和InnoDB底
二叉树的前序、中序、后序、层序以及蛇形遍历的实现方式 文章目录树节点的定义二叉树的前序遍历递归迭代二叉树的中序遍历递归迭代二叉树的后序遍历递归迭代二叉树的层序遍历递归迭代二叉树的蛇形遍历递归迭代总结树节点的定义首先,给出树节点的定义,方便我们理解下面的算法:public class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(int x) { val = x; }}
不可不说的 Java “锁”事 文章目录前言1. 乐观锁 VS 悲观锁2. 自旋锁 VS 适应性自旋锁3. 无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁无锁偏向锁轻量级锁重量级锁4. 公平锁 VS 非公平锁5. 可重入锁 VS 非可重入锁6. 独享锁 VS 共享锁结语前言Java 提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自 JDK 8 和 Ne...
基于 Redis 的分布式锁实现 文章目录关于分布式锁基于数据库实现分布式锁基于数据库表的增删基于数据库排他锁基于数据库锁的优缺点基于 Zookeeper 实现分布式锁基于缓存实现分布式锁基于 Redis 的分布式锁实现SETNX存在死锁的问题一种实现方式获取锁释放锁总结关于分布式锁很久之前有讲过并发编程中的锁「并发编程的锁机制:synchronized和lock」。在单进程的系统中,当存在多个线程可以同时改变某个变量时,就需...
详述 JedisCommands 接口中的方法说明 文章目录前言方法说明前言在 JedisCommands 接口中,其提供了操作 Redis 的全部方法,分别对应着 Redis 的各种操作命令,但遗憾的是,该接口中并没有给出详细的注释。在这种情况下,如果我们想知道某个方法的作用,就需要我们找到其对应的 Redis 命令来进行理解了,很不方便。因此,在本文中,给出 JedisCommands 接口中各方法的详细注释,希望对大家有所帮助!顺便,...
来来来,我们聊一聊,为什么不建议使用递归操作? Rt. 可能大家都或多或少的听见过类似的话或者建议:尽量少使用递归操作,甚至干脆就不要使用递归操作。但大家在听到这句话的时候,是否会产生过疑问,为什么不建议使用递归操作呢?现在,我们就一起聊聊这个话题,看看递归到底会产生什么样的问题。首先,大家思考一道算法题:如何实现二叉树的中序遍历?对于树的遍历,无论是前序、中序还是后序遍历,大家可能下意识的就会想到使用递归操作,为什么呢?因为递归...
面试官,请不要再问我三次握手和四次挥手了,好吗? 三次握手和四次挥手是各个公司常见的考点,也具有一定的水平区分度,也被一些面试官作为热身题。很多小伙伴说这个问题刚开始回答的挺好,但是后面越回答越冒冷汗,最后就歇菜了。见过比较典型的面试场景是这样的:面试官:请介绍下三次握手求职者:第一次握手就是客户端给服务器端发送一个报文,第二次就是服务器收到报文之后,会应答一个报文给客户端,第三次握手就是客户端收到报文后再给服务器发送一个报文,三次握手就...
史上最简单的 MySQL 教程 史上最简单的 MySQL 教程数据库是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。在这里,作者将用最简单的语言详细讲述 MyS...
详述 Elasticsearch 通过 RESTful API 查询索引信息的方法 文章目录情景解决方案情景在使用 Elasticsearch 的时候,我们通常有两种方法来操作集群,第一种:在服务器或者终端,使用命令来操作集群;第二种:编写程序,通过 Elasticsearch 的 API 来操作集群。其中,第一种方式是功能最全的,Elasticsearch 的所有操作情形,都可以通过命令来实现;但与之相对的,第二种方式就显得相形见绌了,因为 Elasticsea...
Akka 指南 之「断路器」 温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。文章目录断路器为什么要使用它们?它们做什么?示例初始化基于 Future 和同步的 API显式控制失败计数底层 API断路器为什么要使用它们?在分布式系统中,断路器(circuit breaker)用于提供稳定性和防止级联故障(cascading failures)。这些应该...
性能测试:一种计算 TP90、TP95 和 TP99 等水位线的方法 文章目录前言前言在性能测试中,我们经常会选择 TP90、TP95 或者 TP99 等水位线作为性能指标。在本文中,我们就给出一种计算 TP90、TP95 和 TP95 等水位线的方法。首先,我们先解释一下 TP90、TP95 和 TP95 的含义:TP90,top percent 90,即 90% 的数据都满足某一条件;TP95,top percent 95,即 95% 的数据都满足某一...
Spring IOC 容器源码分析:循环依赖的解决方法 Hello everybody,如题,这是一个招聘通知:招聘邮箱:guobinhit@qq.com福利情况:NO1. 带薪假期,国外团建,绩效奖金;NO2. 司龄满足7年发放足金纪念金牌,工龄满7年有无时限自由假;NO3. 每日健身名额,每周两次社团活动,包括羽毛球、篮球、足球和瑜伽。易宝支付是中国支付行业的开创者和领导者,也是互联网金融(ITFIN)和移动互联领军企业。易宝...
详述 IntelliJ IDEA 版本控制不显示颜色提示的解决方法 在使用 IntelliJ IDEA 版本控制功能的时候,有一个功能点特别好,那就是对于新增文件或者修改文件,IDEA 会给出颜色提示,以区分文件类型,如新增、修改或者未加入版本控制。但偶尔会出现导入新check out到本地的项目的时候,不显示颜色提示的问题!如上图所示,这是一个基于 Git 进行版本控制的名为leetcodes的项目。我们新建了一个名为NewNode的类文件,但是未显示任何...
详述 GitHub 如何将代码从原分支合并到 fork 分支 在使用 GitHub 的过程中,我们可能会遇到这样的问题,即:如何将原分支的代码合并到fork的分支?这个问题其实很常见。当我们fork别人代码的时候,实际上是对原项目当时状态以及进度进行了一个快照,其随后发生的改变,并不会自动同步到我们的fork分支!但是为了保证我们fork的分支状态与原分支同步,这就需要我们主动将原分支的代码合并到我们fork的分支了。现在,以博主fork的akka项...
解决 axios 提交时间类型参数遇到的时区自动转换问题 文章目录问题描述问题描述在使用axios想后端异步发送时间类型(date)数据的时候,遇到了时间参数自动转换时区的问。如上图所示,通过时间组件选定时间之后,打印出了时间。但是,在数据向后端传输的时候,通过 Chrome 浏览器的Inspect功能,查看Network,发现时间参数被自动修改了。我们选定的时间是2019-07-12 00:00:00,但是在传输的时候被修改为2019-07...
分库分表?如何做到永不迁移数据和避免热点? 中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。
如何画出一张合格的技术架构图? 当我们想用一张或几张图来描述我们的系统时,是不是经常遇到以下情况:- 对着画布无从下手、删了又来?- 如何用一张图描述我的系统,并且让产品、运营、开发都能看明白?- 画了一半的图还不清楚受众是谁?- 画出来的图到底是产品图功能图还是技术图又或是大杂烩?- 图上的框框有点少是不是要找点儿框框加进来?- 布局怎么画都不满意……如果有同样的困惑,本文将介绍一种画图的方法论,来让架构图更清晰。
Akka 指南 之「分布式数据」 当需要在 Akka 集群中的节点之间共享数据时,Akka 分布式数据非常有用。通过提供类似 API 的键值存储的 Actor 访问数据。键是具有数据值类型信息的唯一标识符。这些值是无冲突的复制数据类型(`Conflict Free Replicated Data Types (CRDTs)`)。所有数据条目都通过直接复制和基于`gossip`的协议传播到集群中的所有节点或具有特定角色的节点。你可以对读写的一致性级别进行细粒度控制。自然`CRDTs`可以在不协调的情况下从任何节点执行更新。来自不同节点
Spring Boot 项目启动报 driver class for database type NONE 的原因及解决方法 在默认配置下,Spring Boot 项目会在启动时自动加载数据库相关的配置,如果我们没有在`application.yml`文件中指定数据库配置文件的路径,则会出现该问题。
Akka 指南 之「跨多个数据中心集群」 本章介绍如何跨多个数据中心、可用性`zones`或区域使用 Akka 集群。了解使用 Akka 集群时数据中心边界的原因是,与同一数据中心中的节点之间的通信相比,跨数据中心的通信通常具有更高的延迟和更高的故障率。然而,节点的分组并不局限于数据中心的物理边界,即使这是主要的使用情况。由于其他原因,它也可以用作逻辑分组,例如隔离某些节点以提高稳定性,或者将大型集群拆分为较小的节点组以获得更好的可伸缩性。
Akka 指南 之「集群指标扩展」 集群的成员节点可以收集系统健康指标,并在集群指标扩展的帮助下将其发布到其他集群节点和系统事件总线上注册的订阅者。集群指标信息主要用于负载均衡路由器(`load-balancing routers`),也可用于实现基于指标的高级节点生命周期,例如当 CPU 窃取时间过多时“节点让它崩溃”。如果启用了该功能,状态为「[WeaklyUp](https://doc.akka.io/docs/akka/current/cluster-usage.html#weakly-up)」的集群成员将参与集群指标收集和分
Akka 指南 之「集群客户端」 不属于集群的 Actor 系统可以通过「[ClusterClient](https://doc.akka.io/japi/akka/2.5/?akka/cluster/client/ClusterClient.html)」与集群中的某个 Actor 通信,客户端可以在属于另一个集群的`ActorSystem`中运行。它只需要知道一个(或多个)节点的位置,用作初始接触点。它将与集群中的某个「[ClusterReceptionist](https://doc.akka.io/japi/akka/2.5/?akk
Elasticsearch 6.6 官方文档 之「索引分片分配」 在本模块中,提供每个索引的设置,以控制分片到节点的分配:- [分片分配过滤](https://www.elastic.co/guide/en/elasticsearch/reference/current/shard-allocation-filtering.html):`Shard allocation filtering`,控制将哪些分片(`shard`)分配(`allocation`)给哪些节点。- [延迟分配](https://www.elastic.co/guide/en/elasticse
Elasticsearch 6.6 官方文档 之「集群」 `master`的一个主要角色是决定分配哪些分片给哪些节点,以及何时在节点之间移动分片以重新平衡集群。有许多设置可用于控制分片分配过程:- 集群等级分片分配(`Cluster Level Shard Allocation`)列出了控制分配和重新平衡操作的设置。- 基于磁盘的分片分配(`Disk-based Shard Allocation`)解释了 Elasticsearch 如何考虑可用磁盘空间以及相关设置。- 分片分配感知(`Shard Allocation Awareness`)和强制感知
Akka 指南 之「集群中的分布式发布订阅」 温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。文章目录集群中的分布式发布订阅依赖简介发布主题组发送集群中的分布式发布订阅依赖为了使用分布式发布订阅(Distributed Publish Subscribe),你需要将以下依赖添加到你的项目中:<!-- Maven --><dependency>...
详述 Elasticsearch 安装 HDFS 插件存储快照及还原的方法 详述 Elasticsearch 配置 HDFS 插件存储及还原快照的方法详述 Elasticsearch 配置 HDFS 插件存储及还原快照的方法详述 Elasticsearch 配置 HDFS 插件存储及还原快照的方法...
Elasticsearch 6.6 官方文档 之「节点」 每次启动 Elasticsearch 实例时,都会启动一个节点。连接节点的集合称之为「集群」。如果你运行的是单个 Elasticsearch 节点,那么你也就拥有一个由一个节点组成的集群。
Elasticsearch 6.6 官方文档 之「快照和还原」 快照(`snapshot`)是从正在运行的 Elasticsearch 集群中获取的备份。你可以获取单个索引(`indices`)或整个集群的快照,并将其存储在共享文件系统上的存储库中,并且有支持 S3、HDFS、Azure、Google 云存储等远程存储库的插件。快照是递增的。这意味着,创建索引快照时,Elasticsearch 将避免复制存储库中已存储的任何数据,作为同一索引的早期快照的一部分。因此,频繁地对集群进行快照是很有效的。
Elasticsearch 5.x 版本中的冷热数据架构 当使用 Elasticsearch 进行更大的时间数据分析用例时,我们建议使用基于时间(`time-based`)的索引和具有 3 种不同类型节点(主节点、热节点和冷节点)的分层架构,我们称之为`Hot-Warm`架构。每个节点都有自己的特性,如下所述。
Spring Boot 项目自动重启以及 jps 查不到 java 进程的原因及解决方法 文章目录问题背景问题描述解决方法问题背景新开发了一个 Spring Boot 项目,直接打包部署到了服务器,使用bash脚本启动程序,日志输出到直接指定nohup.out文件。问题描述实际上,遇到了有两个问题,分别是:程序总是在运行了一段时间后自动重启,而且不断的重启;在程序正常运行期间,使用jps命令查看 Java 进程,查不到该应用的进程。解决方法在程序出现问题之后,查看日...
Elasticsearch 快照到 HDFS 遇到的 PrivateCredentialPermission 问题及解决方法 文章目录问题背景问题描述解决方法问题背景在 Elasticsearch 集群中配置了 HDFS 插件,用于存储集群的索引快照。问题描述在 HDFS 存储库创建成功之后,尝试创建索引快照的时候,遇到了如下问题:如上图所示,在执行创建快照的命令时,抛出了repository_exception异常,但也给出了一串原因:"reason 4" : "[test541to660] could ...
Akka 指南 之「集群分片」 当你需要将 Actor 分布在集群中的多个节点上,并且希望能够使用它们的逻辑标识符与它们进行交互,但不必关心它们在集群中的物理位置时,集群分片(`Cluster sharding`)非常有用,这也可能随着时间的推移而改变。例如,它可以是表示域驱动设计(`Domain-Driven Design`)术语中聚合根(`Aggregate Roots`)的 Actor。在这里,我们称这些 Actor 为“实体”。这些 Actor 通常具有持久(`durable`)状态,但此功能不限于具有持久状态的 Actor。
Akka 指南 之「集群单例」 集群单例模式由`akka.cluster.singleton.ClusterSingletonManager`实现。它在所有集群节点或标记有特定角色的一组节点中管理一个单实例 Actor 实例。`ClusterSingletonManager`是一个 Actor,它应该在集群中的所有节点或具有指定角色的所有节点上尽早启动。实际的单例 Actor 是由最老节点上的`ClusterSingletonManager`通过从提供的`Props`创建子 Actor 来启动的。`ClusterSingletonMana
Akka 指南 之「集群感知路由器」 所有「routers」都可以知道集群中的成员节点,即部署新的路由(`routees`)或在集群中的节点上查找路由。当一个节点无法访问或离开集群时,该节点的路由将自动从路由器中注销。当新节点加入集群时,会根据配置向路由器添加额外的路由。当一个节点在不可访问之后再次可访问时,也会添加路由。
Akka 指南 之「集群的使用方法」 有关 Akka 集群概念的介绍,请参阅「[集群规范]」。Akka 集群的核心是集群成员(`cluster membership`),以跟踪哪些节点是集群的一部分以及它们的健康状况。
Akka 指南 之「集群规范」 Akka 集群(`Cluster`)提供了一种容错的、分散的、基于点对点(`peer-to-peer`)的集群成员(`membership`)服务,不存在单点故障或单点瓶颈。它使用`Gossip`协议和自动故障检测器(`failure detector`)来实现这一点。
详述 Elasticsearch 通过范围条件查询索引数据的方法 在使用 Elasticsearch 的时候,我们可能会遇到需要**以范围为条件查询索引数据**的需求。有两种方法可以实现我们的需求:- 第一种:在服务器或者终端,使用命令来查询索引数据;- 第二种:编写程序,通过 Elasticsearch 的 API 来查询索引数据。接下来,我们就以**时间范围**为例,详述这两种查询索引数据的方法。
Akka 指南 之「邮箱」 Akka 的邮箱中保存着发给 Actor 的信息。通常,每个 Actor 都有自己的邮箱,但也有例外,如使用`BalancingPool`,则所有路由器(`routees`)将共享一个邮箱实例。
Akka 指南 之「调度器」 正如在 Actor System 中所解释的,每个 Actor 都是其子级的监督者,因此每个 Actor 定义了故障处理的监督策略。这一策略不能在 Actor 系统启动之后改变,因为它是 Actor 系统结构的一个组成部分。
详述 Elasticsearch 集群的搭建步骤及方法 说实话,关于搭建 Elasticsearch 集群的步骤及方法,网上有很多文章,内容也都大同小异,呃,本文也差不多,因此并没有指望本文能够给大家带来什么特别新鲜的东西,仅是为了记录自己搭建 Elasticsearch 集群的过程而已!如果在此基础之上,能够帮忙大家顺利搭建属于自己的 Elasticsearch 集群的话,那就再好不过了。
Akka 指南 之「Actors」 Actor Model 为编写并发和分布式系统提供了更高级别的抽象。它减少了开发人员必须处理显式锁和线程管理的问题,使编写正确的并发和并行系统变得更容易。1973 年卡尔·休伊特(`Carl Hewitt`)在论文中定义了 Actors,然后通过 Erlang 语言所普及,并且在爱立信(`Ericsson`)成功地建立了高度并发和可靠的电信系统。
快速入门 Akka Java 指南 Akka 是一个用于在 JVM 上构建高并发、分布式和容错的事件驱动应用程序的运行时工具包。Akka 既可以用于 Java,也可以用于 Scala。本指南通过描述 Java 版本的Hello World示例来介绍 Akka。
Akka 指南 之「容错」 正如在「Actor System」中所解释的,每个 Actor 都是其子级的监督者,因此每个 Actor 定义了故障处理的监督策略。这一策略不能在 Actor 系统启动之后改变,因为它是 Actor 系统结构的一个组成部分。
Akka 指南 之「消息传递可靠性」 温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。文章目录消息传递可靠性一般规则讨论:“至多一次”是什么意思?讨论:为什么不保证传递?讨论:消息排序通信故障在 JVM(本地)消息发送的规则小心你对这部分的操作!本地消息发送的可靠性本地消息发送顺序本地顺序与网络顺序有什么关系?高级抽象消息模式事件源带明确确认的邮箱死信应该用死信做什...
HDFS 集群无法启动 DataNode 节点以及管理界面缺少 DataNode 节点的解决方法 文章目录前言1 问题描述2 尝试解决2.1 解决 ISSUE 22.1 解决 ISSUE 1前言搭建了一个 HDFS 集群,用了 3 台虚拟机,1 台虚拟机是master作为NameNode节点;2 台虚拟机分别是slave1和slave2作为DataNode节点,具体的集群搭建过程可参考「快速搭建 HDFS 系统(超详细版)」这篇博文。1 问题描述在搭建 HDFS 集群的过程中,难免会遇...
快速搭建 HDFS 系统(超详细版) 文章目录节点介绍开始搭建 HDFS 系统基础环境变量配置第 1 步:解压 Hadoop 安装包第 2 步:配置 Hadoop 的 Java 运行环境第 3 步:在 Linux 中配置 Hadoop 环境变量设置 SSH 免密码登录配置 HDFS配置 NameNode 节点格式化 NameNode 以及启动 HDFS 系统节点介绍首先,准备 5 台虚拟机,其中 1 台虚拟机作为NameNode,...
百度的春晚战事 “我们对春晚一无所知。”罗振宇曾在跨年演讲上如是说。无论悲喜,反正每个中国人都为春晚辟出了一块“专属记忆”。而从2015年开始,中国人的春晚记忆里被点上了一颗“红痣”。那就是——总有一家顶尖互联网公司面带羞赧地走上舞台,给十几亿人发红包。“一无所知”的形容,可谓精妙。春晚时,你只知道自己在对着电视刷红包,但从空中俯瞰,十多亿人同时拿起手机,将会汇聚起怎样一种数据海啸,即使《2012》《后天...
Akka 指南 之「持久化」 温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。文章目录持久化依赖示例项目简介体系结构事件源持久化依赖为了使用 Akka 持久化(Persistence)功能,你必须在项目中添加如下依赖:&amp;amp;amp;lt;!-- Maven --&amp;amp;amp;gt;&amp;amp;amp;lt;dependency&amp;amp;amp
Akka 指南 之「配置」 温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。文章目录配置从哪里读取配置?使用 JarJar、OneJar、Assembly 或任何 jar-bundler 时自定义 application.conf包括文件配置日志记录关于类加载器的一句话应用程序特定设置配置多个 ActorSystem从自定义位置读取配置Actor 部署配...
Akka 指南 之「Akka 和 Java 内存模型」 温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。Akka 和 Java 内存模型使用 LightBend 平台(包括 Scala 和 Akka)的一个主要好处是简化了并发软件的编写过程。本文讨论了 LightBend 平台,特别是 Akka 如何在并发应用程序中处理共享内存。Java 内存模型在 Java 5 之前,Jav...
Akka 指南 之「位置透明」 温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。位置透明上一节描述了如何使用 Actor 路径来启用位置透明(location transparency)。这个特殊的特性需要一些额外的解释,因为在编程语言、平台和技术的上下文中,相关术语“透明远程处理(transparent remoting)”的使用方式非常不同。默认分布...
Akka 指南 之「Actor 引用、路径和地址」 温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。Actor 引用、路径和地址本章描述如何在可能的分布式 Actor 系统中标识和定位 Actor。它与这样一个核心理念紧密相连:「Actor 系统」形成了内在的监督层次结构,并且 Actor 之间的通信在跨多个网络节点的位置方面是透明的。上图显示了 Actor 系统中最重要的...
Akka 指南 之「监督和监控」 温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。监督和监控关于「Actor Systems」的前一节解释了 Actor 如何形成层次结构,以及在构建应用程序时是最小的单元。本节将孤立地研究一个这样的 Actor,解释在实现它时遇到的概念。有关所有细节的更深入参考,请参考「Actors」。Actor 是状态、行为、邮箱、子 A...
Akka 指南 之「什么是 Actor?」 温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。什么是 Actor?关于「Actor Systems」的前一节解释了 Actor 如何形成层次结构,以及在构建应用程序时是最小的单元。本节将孤立地研究一个这样的 Actor,解释在实现它时遇到的概念。有关所有细节的更深入参考,请参考「Actors」。Actor 是状态、行为、邮...
Akka 指南 之「Actor 系统」 温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。Actor 系统Actor 是封装状态和行为的对象,它们通过交换放在收件人邮箱中的消息进行专门的通信。从某种意义上说,Actor 是面向对象编程最严格的形式,但最好将其视为“人”:当与 Actor 一起建模解决方案时,设想一组人员并为其分配子任务,将其功能安排到组织结构中,并考虑...