随笔分类 -  原理&故事

上一页 1 2 3 4 5 6 ··· 9 下一页
讲一些理论性的东西,不涉及具体技术。讲一些有趣的故事,让生活更美好!
摘要:ES是一个分布式搜索引擎,其除了用户提供必要的通信服务外,集群间也必须保持紧密的通信联系,才能在必要的时候给出正确的结果。其则必然涉及到各种繁多且要求高的通信场景,那么如何实现高性能的通信,则是其必须要考虑的问题。 今天,我们就以es的transportService的实现为窥点,观察es的高性能的 阅读全文
posted @ 2021-05-02 16:09 阿牛20 阅读(822) 评论(0) 推荐(0) 编辑
摘要:ES作为超强悍的搜索引擎,除了需要具有齐全的功能支持,超高的性能,还必须要有任意扩展的能力。一定程度上,它是一个大数据产品。而要做扩展性,集群自然少不了。然而单独的集群又是不够的,能够做的事情太少(比如通常的集群为负载均衡式对等集群),所以它需要自己组建合适自己的集群。也就是服务需要自动发现,自动协 阅读全文
posted @ 2021-04-18 09:29 阿牛20 阅读(945) 评论(0) 推荐(0) 编辑
摘要:单元测试,从一定程度上可以看出一个同学达到的层次。但又不完全是,有时可能只是一个思考方式的转变。单元测试有非常多的工具供选择,在java中,junit无疑是比较常用的。本文列出,junit在spring中的使用样例,供参考。 1. 单元测试主要方式 这里仅说我们常用的单元测试的场景,或者是我自己常用 阅读全文
posted @ 2021-03-15 21:31 阿牛20 阅读(564) 评论(0) 推荐(0) 编辑
摘要:ES作为强大的和流行的搜索引擎服务组件,为我们提供了方便的和高性能的搜索服务。在实际应用中也是用得比较爽,但如果能够理解更深入一点,那就更好了。虽然网上有许多的文章已经完整说明,ES是如何如何做到高性能,如何做到高可用的,以及有许多的避坑指南。但那些,毕竟还是太描述化。 就让我们以源码作为出发点,一 阅读全文
posted @ 2021-03-07 17:21 阿牛20 阅读(574) 评论(0) 推荐(0) 编辑
摘要:前面的nginx系列讲解了nginx很多通用概念,流程,以及核心的http模块的一些实现。应该说大体上对nginx已经不再陌生和神秘。 今天我们不看全局,只看一个非常非常小的细节:nginx是多进程并发模型的应用,但为了网络请求的安全性,必须要使用到锁,那么这个进程锁如何实现呢? 1. nginx进 阅读全文
posted @ 2021-02-25 11:17 阿牛20 阅读(658) 评论(0) 推荐(0) 编辑
摘要:经过前面几章的简单介绍,我们已经大致了解了jvm的启动框架和执行流程了。不过,这些都是些无关痛痒的问题,几行文字描述一下即可。 所以,今天我们从另一个角度来讲解jvm的一些东西,以便可以更多一点认知。即如题:jvm是如何找到对应的java方法,然后执行的呢?(但是执行太复杂,太重要,我们就不说了。我 阅读全文
posted @ 2021-02-21 20:08 阿牛20 阅读(698) 评论(0) 推荐(1) 编辑
摘要:要想写出高性能高并发的应用,自然有许多关键,如io,算法,异步,语言特性,操作系统特性,队列,内存,cpu,分布式,网络,数据结构,高性能组件。 胡说一通先。 回到主题,线程池。如果说多线程是提高系统并发能力利器之一,那么线程池就是让这个利器更容易控制的一种工具。如果我们自己纯粹使用多线程基础特性编 阅读全文
posted @ 2021-02-20 16:19 阿牛20 阅读(467) 评论(0) 推荐(1) 编辑
摘要:上两篇中梳理了整个java启动过程中,jvm大致是如何运行的。即厘清了我们认为的jvm的启动过程。但那里面仅为一些大致的东西,比如参数解析,验证,dll加载等等。把最核心的loadJavaVM()交给了一个dll或者so库。也就是真正的jvm我们并没有接触到,我们仅看了一个包装者或者是上层应用的实现 阅读全文
posted @ 2021-02-16 14:46 阿牛20 阅读(813) 评论(0) 推荐(1) 编辑
摘要:上一篇粗略讲了下jvm的启动过程,但很多路子还没跑通。其中非常核心的,加载vm的过程。这个可以在hotspot中找到端倪。但jvm启动,又是如何载入java代码呢。 1. JavaMain加载流程 我们知道,java中入口是在main方法中,可以在命令行中指定main类,或者jar包中指定的mani 阅读全文
posted @ 2021-02-13 20:24 阿牛20 阅读(389) 评论(2) 推荐(1) 编辑
摘要:jvm是java的核心运行平台,自然是个非常复杂的系统。当然了,说jvm是个平台,实际上也是个泛称。准确的说,它是一个java虚拟机的统称,它并不指具体的某个虚拟机。所以,谈到java虚拟机时,往往我们通常说的都是一些规范性质的东西。 那么,如果想要研究jvm是如何工作的,就不能是泛泛而谈了。我们必 阅读全文
posted @ 2021-02-07 08:50 阿牛20 阅读(1624) 评论(0) 推荐(0) 编辑
摘要:Netty作为一个流行的应用框架,它的强悍之处主要有两点:1. 是性能强悍,可以轻松承载数万并发; 2. 其编程模型简单,容易上手; 这就给大家打开了一扇通向高性能的大门。 我在rocketmq的一篇文章里阐述过,高性能的核心本质和实现原理。主要就是依赖于操作系统提供的高效io模型和内存控制。有兴趣 阅读全文
posted @ 2021-01-31 17:10 阿牛20 阅读(1344) 评论(0) 推荐(0) 编辑
摘要:上一篇中,我们了解了如何nginx的配置原则及解析框架,以及解析location配置的具体实现,相信大家对该部分已经有了比较深刻的认识。 本篇,我们进一步来了解下,解析之后的配置,如何应用到实际中的吧。当然,我们只讲解 location 的查找过程。 1. location的接入流程 在nginx的 阅读全文
posted @ 2021-01-24 17:00 阿牛20 阅读(763) 评论(0) 推荐(0) 编辑
摘要:nginx成为非常流行的代理服务软件,最根本的原因也许是在于其强悍性能。但还有一些必要的条件,比如功能的完整,配置的易用,能够解决各种各样的实际需求问题,这些是一个好的软件的必备特性。 那么,今天我们就来看看nginx配置的部分原则和解析原理吧。我们只做location部分的细节解析,但其他配置道理 阅读全文
posted @ 2021-01-19 10:18 阿牛20 阅读(1250) 评论(3) 推荐(0) 编辑
摘要:说到json,相信没有人会陌生,我们天天都在用。那么,我们来讨论个问题,json有序吗?是谁来决定的呢?如何保持? 说到底,json是框架还是啥?实际上它只是一个数据格式,一个规范标准,它永远不会限制实现方的任何操作,即不会自行去保证什么顺序性之类的。json的格式仅由写入数据的一方决定其长像如何。 阅读全文
posted @ 2021-01-10 15:37 阿牛20 阅读(9763) 评论(1) 推荐(0) 编辑
摘要:消息中间件,说是一个通信组件也没有错,因为它的本职工作是做消息的传递。然而要做到高效的消息传递,很重要的一点是数据结构,数据结构设计的好坏,一定程度上决定了该消息组件的性能以及能力上限。 1. 消息中间件的实现方式概述 消息中间件实现起来自然是很难的,但我们可以从某些角度,简单了说说实现思路。 它的 阅读全文
posted @ 2021-01-02 23:08 阿牛20 阅读(2122) 评论(1) 推荐(1) 编辑
摘要:分布式系统的三大理论CAP就不说了,但是作为分布式消息系统的rocketmq, 主从功能是最最基础的保证可用性的手段了。也许该功能现在已经不是很常用了,但是对于我们理解一些分布式系统的常用工作原理还是有些积极意义的。 今天就一起来挖挖rocketmq是如何实现主从数据同步的吧。 1. 主从同步概述 阅读全文
posted @ 2020-12-27 21:02 阿牛20 阅读(3496) 评论(0) 推荐(0) 编辑
摘要:上一篇文章讲了如何设计和实现高并发高性能的应用,从根本上说明了一些道理。且以rocketmq的mappedFile的实现作为一个突破点,讲解了rocketmq是如何具体实现高性能的。从中我们也知道,mappedFile只是其利用的操作系统的一个特性小点。 今天,我们就来说说,rockmq实现高性能的 阅读全文
posted @ 2020-12-26 20:50 阿牛20 阅读(2510) 评论(0) 推荐(1) 编辑
摘要:业务场景,基于同一套代码,可能会有不同的部署需求。原因可能是为做数据隔离,权限隔离,等等。。。 没有什么新的实际需求,基本上只要根据新的环境配置把代码部署过去就可以了。说直接点,就是配置文件不一样。如何处理呢? 1. 多环境部署解决方案列举 要解决这类问题,实际上已经有很多的现成的案例了。我们唯一的 阅读全文
posted @ 2020-12-22 16:48 阿牛20 阅读(440) 评论(0) 推荐(0) 编辑
摘要:RocketMQ作为消息中间件,经常会被用来和其他消息中间件做比较,比对rabbitmq, kafka... 但个人觉得它一直对标的,都是kafka。因为它们面对的场景往往都是超高并发,超高性能要求的场景。 所以,有必要深挖下其实现高性能,高并发的原因。实际上,这是非常大的话题,我这里也不打算一口吃 阅读全文
posted @ 2020-12-21 10:10 阿牛20 阅读(1499) 评论(0) 推荐(0) 编辑
摘要:在rocketmq中,nameserver充当了一个配置管理者的角色,看起来好似不太重要。然而它是一个不或缺的角色,没有了它的存在,各个broker就是一盘散沙,各自为战。 所以,实际上,在rocketmq中,nameserver也是一个领导者的角色。它可以决定哪个消息存储到哪里,哪个broker干 阅读全文
posted @ 2020-12-13 15:53 阿牛20 阅读(879) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 ··· 9 下一页