自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xinzhongtianxia的博客

为天地立心,为生民立命,为往圣继绝学,为万世开太平。

  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 2021年终总结

19年初写了18年年终总结,现在22年了,中间断掉了,甚是遗憾,其实还是懒。懒得折腾整理各种照片视频,于是英明神武的某人建议可以一年写一次年终总结,这样老了不至于忘记很多事情。我觉得很有道理。从19年新冠爆发,到现在还没有停止的迹象。20年元旦回了一趟老家,正赶上石家庄疫情最严重的时候,结果从元旦隔离到春节,好多年没有在老家待这么长时间了。年近九十的爷爷比之前更瘦了,开始经常忘东西了,所幸身体依然健康。爸爸依然闲不住,大冬天还要出去帮人修剪果树,不过老人家最近开始对文学感兴趣了,不知道是好事还是坏事

2022-01-31 12:42:43 613 1

原创 java程序员之路及各阶段书籍推荐

从四年前在学校初次接触java开始,一路摸索,走过不少弯路,浪费过不少时间,摸着石头过河,到现在多少有了一些心得,记录在此,希望对后来人有所帮助。入门篇怎样入门完事开头难,入门之后剩下的就都好说了。对于有其他程序语言使用经验的同学来说,java应该不需要入门,稍微看看就能明白了。对于没有编程经验的同学来说,初次接触java语言,选对学习途径非常重要。 我认为比较好的一个...

2018-07-10 23:56:59 2049 7

原创 Kubernetes Service/Pod DNS 记录的添加时机

更进一步,对于headless pod的DNS记录,CoreDNS并不是一监听到service创建的事件就会给每个endpoint创建一条DNS记录,如果我们的pod还没启动完,此时通过dns就能访问的话,就会出错了。当然,如果只有headless service,没有statefulset的情况下,pod也是会被创建一个DNS记录的,只不过记录的最前面pod名字的部分是一个随机的字符串。而Pod的ready状态又是由Kubernetes的readiness probe 探针决定的。...

2022-08-25 20:45:00 616 1

原创 论程序员的品质

很久之前就想写这一篇,一直担心阅历不够,怕误导人,迟迟没有动笔。

2022-07-21 21:08:53 633

原创 Kubernetes Operator

网上关于Operator的资料并不多,关于Java开发Operator更是几乎没有,希望对大家有所帮助,不至于像我当初一样,只能摸着石头过河,面对茫茫互联网,就是找不到一篇我想要的文章。

2022-07-20 20:39:39 1244

原创 时序数据库

之前一直对时序数据库十分好奇,觉得一定是十分高大上的东西,后来机缘巧合之下,有幸参与到一款时序数据库的开发工作中,虽然不是最核心的部分,但是一番折腾过后,对时序数据库有了一些了解和心得,在这里分享出来,希望能对大家有所帮助。顾名思义,时序数据库就是处理时序数据的数据库——TSDB(Time Series Data Base)。...

2022-07-12 21:10:24 6485

原创 大型API网关(九)—— 可持续发展

系列的最后一篇了,不说技术了,说人。只要是在发展的业务,其系统就会随着业务的发展而不断的迭代。代码也会随着每一次迭代发生变化。热力学第三定律有云:系统的熵在没有干预的情况下是不断增大的,趋于混沌。软件系统也是如此。在一次一次的迭代中,代码越来越臃肿,几年之后,就没办法维护,只能大规模重构了。对于一个优秀的程序员来说,在其维护系统期间,是可以做到让系统熵减的。做到这一点需要程序员具备两点特质:技术水平技术好的程序员和技术不好的程序员写出来的代码是有很大差异的。而想持续提升技术,只有一条路

2021-05-18 01:00:13 196

原创 大型API网关(八)—— 超卖和资源隔离

先举个超卖的例子,解释一下什么是超卖。小高去某通办了宽带,100M的,很兴奋,想着看视频肯定不卡了。结果到了晚上,刷视频时,又卡成狗。第二天白天就又变好了,这是咋回事呢?聪明的小高想了一下,大概是这个原因:...

2021-05-17 23:45:00 837

原创 大型API网关(七)—— 紧急预案

上一篇,《大型API网关(六)——监控和预警》中,我们讲了如何发现问题,这一篇讲发现问题之后如何进行处理。紧急预案线上出现问题之后,第一时间进行处理的原则都应该是:如何将影响降到最低。线上都鬼哭狼嚎。山崩地裂了,这边研发还在查日志,研究代码。这肯定不行。这一篇讲的是紧急预案,而不是bug修复,关键时刻能力挽狂澜的那种。通常来说,行之有效的紧急措施有三种:回滚、切流、降级。回滚当我们发现问题时,先看最近有没有上线,上线时间和故障时间是否能对的上。如果能对上,大概率是上线引起的。那么,第一要务就.

2021-05-16 16:58:56 1055

原创 大型API网关(六)—— 监控和预警

本来计划监控和预警写一篇的,想了想,这两部分对API网关来说实在是太重要了,于是决定分来来,各占一篇。什么是监控略监控为什么对网关如此重要?因为网关的流量太大了对上百万QPS的系统来说,即使故障只持续1分钟,其造成的影响也是巨大的,网关一旦发生故障,都是大事件。所以,必须有完善的监控,才能第一时间发现并处理问题,将损失降到最低。网关是问题排查的起点网关是最接近用户的系统,当用户有问题需要排查时,网关是第一个要查的。而且,网关作为流量入口,后面是各个业务线的接口,毫不夸张的说,网关的研发,至.

2021-05-16 15:44:52 2257 6

原创 大型API网关(五)—— 限流

什么是流量控制通俗的说,流量控制就是控制用户请求的策略,主要包括:权限、限流、流量调度。权限上一篇已经讲过了,这一篇讲限流,下一篇讲流量调度。限流是指限制用户调用的频率(QPS/QPM)或者次数。为什么要有流量限制为了收费流量限制,站在用户或者运营的角度看,最直观能感受到的作用是 —— 收费。。。各大主流开放平台的对外API,一般都有一些免费的额度,可以供个人测试用,一旦想大规模调用,就需要付费购买更大的额度(频率、次数),根据调用次数或者频率进行收费。一旦超过拥有的额度,就会被限制调用。贴一

2021-05-11 23:55:11 657

原创 大型API网关(四)—— 接口权限

想象一下,我们的API网关对外开放了好多个接口,有的接口是通用的,大家都可以访问,有的接口是定制的,只对特定用户开放,比如付费用户、合作伙伴等,这就涉及到接口权限控制的问题。权限功能的示意图如下:接口权限是一个网关系统最基本的需求,实现方式也有很多。我们这里只讨论最简单的一种。ACL这个英文缩写,大家都不陌生,全拼是Access Control Lists 访问控制列表。举个例子,我们有service1,service2,service3三个接口,有userA, userB, userC三个用户.

2021-03-05 17:24:58 2977

原创 大型API网关(三)—— 成本

大型API网关(三)—— 成本成本就是钱,钱是不得不考虑的头等问题。按照我的理解,网关系统的成本主要体现在3个方面:带宽机器人下面详细说一下。1. 带宽成本这一点和其他系统不太一样,其他系统基本都在内网,不太会涉及到带宽成本。但是API网关是内网和公网连接的地方,是所有流量的出入口,带宽成本巨大。像一些直播类、视频类的业务,带宽成本占总成本的比例是相当高的。说了半天,怎么节约带宽成本呢?节约带宽,说到底,就是减少数据传输量。可以从下面几点着手:1.1 压缩数据数据压缩是很常见的.

2021-01-20 18:08:01 474 1

原创 大型API网关(二)—— 性能

网关作为流量的入口,需要处理极大量的并发请求,对一个大型网关而言,峰值QPS往往会达到百万级别,因此,对网关而言,性能是必须重点考虑的一个因素。当前主流的服务架构,一般都是在配置比较高的硬件服务器上划分出很多容器,根据请求量的大小,进行横向扩容/缩容。一个粗略的网关系统的架构,大致是下面这个样子的:这一篇,只讲API网关这一层的性能。硬件本身的性能是一定的,因为硬件本身的资源是一定的,这里和资源相关的性能是指机器的性能,比如磁盘每秒能转多少圈,CPU每秒能进行多少次运算,网卡每秒能传输多少数据,等

2021-01-07 17:43:45 639

原创 大型API网关(一)—— 序言

网上关于API网关的文章有很多,但是大多内容比较空洞,从事相关开发工作近两年,有一些感悟,记录下来,希望能对后来人有所帮助。什么是API网关计算机的概念都来源于生活,API网关类似古时候各个城池的门卫,负责对进出的人流进行控制,保证城市的安全。API网关通常位于流量的入口,负责对进出的流量进行加工处理。当然,大到整个公司的流量,小到一个服务的入口,都可以有网关,无非规模不同,功能多少不一,但本质上都是对流量就行控制。规模越大,涉及到的功能就越多,刚好工作中涉及到的网关规模算是比较大的,打算写成一个系

2021-01-07 17:23:26 369

原创 存储(九)—— 你能看到多远的未来

本文同步发表在个人独立博客,哪里很是清净,没有广告:http://blog.lanjingdejia.com/articles/2019/12/12/1576143940164.html到这里已经接近系列的尾声了,回头看了看写下第一篇的时间,已经是10个月之前的事情了,记得当时凡冬问:“小扬哥,你这啥时候能写完呢?”“估计得1年吧”,我答道。想不到还真说中了。到了最后,就不管严谨不严谨了...

2019-12-12 17:49:20 445 1

原创 存储(八)—— Partition

同步发表在个人博客中,哪里没有广告,很是清净:http://blog.lanjingdejia.com/articles/2019/11/04/1572872819427.html如果partition这个词听起来不是那么亲切,说起其他名字,想必你会更熟悉一些,比如,ES里面的shard,HBase里面的region,mysql里面的分库分表,kafka里面的。。额。。kafka里面就叫做p...

2019-11-08 17:43:25 1303

原创 一次线上java应用响应时间过长问题的排查

同步发表在个人独立博客中,那里没有广告,很是清净http://blog.lanjingdejia.com/articles/2019/09/27/1569574874482.html最近接手一个老java应用,没多久接到响应时间太长的报警,整个排查过程还是挺有意思的,记录一下。整个过程中,设计到cpu,内存,垃圾回收,引用,spring, 单例 等等知识,整个下来,心情愉悦。接到报警吃...

2019-09-27 17:05:22 2482

原创 存储(七)—— Replication

同步发表于个人独立博客上,那里没有广告,很是清净:http://blog.lanjingdejia.com/articles/2019/05/30/1559181690043.htmlThe major difference between a thing that might go wrong and that cannot possibly go wrong is that when ...

2019-07-25 15:42:27 947

原创 存储(六)—— LSM Tree

本文同步发表在个人独立博客中,那里没有广告,很是干净:http://blog.lanjingdejia.com/articles/2019/05/17/1558057922714.html上文(存储(五)—— B+树)中提到,B+树是一种原地更新的策略,由于机械磁盘需要转动磁头寻找数据写入的地方,因此在大量随机写的场景下,B+树的效率并不是很高。这里先不提SSD(最后一篇中会讲到硬件的革命对软...

2019-05-21 10:39:38 813

原创 存储(五)—— B+树

文章同步发表于本人独立博客中,那里没有广告,很是干净:http://blog.lanjingdejia.com/articles/2019/04/13/1555040735075.html如果你去应聘后台开发的职位,面试一圈下来,多半会发现,都在说mysql,都在说innodb,都在说索引,都在说B+树,B+树究竟是何物,看完此篇,如果说会让你在面试中游刃有余,我并不开心,如果说会让你对B+树...

2019-04-29 14:41:46 1172 3

原创 存储(四)—— 索引

本文同步发表于自己的博客上,那里比较清静,没有广告:存储(四)—— 索引何谓索引如存储(一)—— 序言中所说,找出自己想要的东西并不难,难的是从大量自己不想要的信息中飞快的找出自己想要的东西。缓存已经帮我们把数据从更远更慢的介质提前移动到了更近更快的介质上,即便如此,从百万、千万、上亿条的数据中找出我们想要的那条数据,也并非易事。好比查字典,不可能一页一页翻,所以,字典都是有目录的,这个...

2019-03-22 17:00:39 3417 1

原创 存储(三)—— 缓存和局部性原理

本文同步发表于个人博客中,那里比较干净,没有广告:http://blog.lanjingdejia.com/articles/2019/03/03/1551602430389.html因何而生书接上回,存储(二)—— 内存、SSD、磁盘,上次提到,不同的存储介质之间的IO速度差异巨大,这样就会造成一个问题:数据在不同介质时间传输时,速度快的永远再等速度慢的,最终系统的数据处理速度被IO最慢的...

2019-03-05 20:58:49 1020 2

原创 存储(二)—— 内存、SSD、磁盘

同步发表于个人技术博客,那里没有广告,很是清净:http://blog.lanjingdejia.com/articles/2019/02/21/1550627082495.html存储介质,硬件始终是一个绕不过去的话题,后悔上学时没好好学计算机原理,进来查阅了不少资料,试着在这里阐述一二,说个大概,难免有误,欢迎指正。比特和IO如上一篇《序言》中所说,计算机中的数据都是以0和1来存储和...

2019-02-21 09:39:29 805

原创 存储(一)—— 序言

同步发表于个人技术博客,哪里比较清静,没有广告:http://blog.lanjingdejia.com/articles/2019/02/14/1550115947310.html起源这里的存储不是指传统意义上的“储藏”,比如存粮食,秋收冬藏,确切点说,“记录”这个词更确切一些。最早的存储,可以追溯到文字的出现。文字出现前,信息只能口口相传,流失和误传是常事。文字出现后,一切都改变了,...

2019-02-19 10:08:36 459 1

原创 2018年终总结

这一年看了很多很多的书,思想一次一次受到冲击的同时,也渐渐明白了一些东西,当足以照亮未来三十年的路。人于心上起经纶有幸在三十岁时读了《传习录》,有幸见识到了知行合一,心学给了人走完这一生最坚定的力量。某人对宇宙颇感兴趣,缠着我讲给她听,无奈吾实属外行,只得找书来读,竟也在不知不觉中翻到了《时间简史》的最后一页。时间简史里讲,物理学到最后可能会进入神的领域,从芥子到须弥,一切也许都是安排好的...

2019-02-06 17:48:51 481 4

原创 关于维护结算付款系统的一些经验

同步发表于个人博客,那里比较清静,木有广告:http://blog.lanjingdejia.com/articles/2019/01/18/1547811920520.html17年12月开始维护打车结算系统,至今一年有余矣,些许心得,录于此处,望对后来者有所裨益。清分、入账不在讨论范围内,此处结算付款只涉及到算钱、付款的流程。业务特点:当今社会,凡是和钱相关的,都是大问题。从这个角...

2019-01-18 19:55:52 500 1

原创 CQRS & Event Sourcing在结算付款系统中的应用

同步发表于个人博客:http://blog.lanjingdejia.com/articles/2019/01/18/1547812028549.htmlCQRS何谓CQRS?Command Query Responsibility Segregation其实就是一种读写分离,不同于数据库纯技术上的读写分离的概念,这里的读写分离是数据流在架构上的读写分离。关于CQRS,我见过的最好的解...

2019-01-18 19:54:04 849

原创 那些惊艳的算法们(四)——唯一ID生成器snowflake

同步发表在个人博客中:http://blog.lanjingdejia.com/articles/2019/01/15/1547516544183.html分布式全局唯一ID生成器很多场景需要使用全局唯一ID,用来标识唯一一条消息,唯一一笔交易,唯一一个用户,唯一一张图片等等。传统数据库表的自增主键是很简单的一种实现方式,前提是你没有分库,也没有分表,如果你分表了,id就会重复,失去唯一性...

2019-01-15 19:27:56 10674 7

原创 java动态追踪技术

同步发表于:http://blog.lanjingdejia.com/articles/2019/01/02/1546398000734.html引子在遥远的希艾斯星球爪哇国塞沃城中,两名年轻的程序员正在为一件事情苦恼,程序出问题了,一时看不出问题出在哪里,于是有了以下对话:“debug一下吧”“线上机器,没开debug端口”“看日志,看看请求值和返回值分别是什么”“那段代码没打印日...

2019-01-10 11:30:40 1897 1

原创 那些惊艳的算法们(三)—— 时间轮

同步发表于:http://blog.lanjingdejia.com/articles/2018/08/13/1534132662997.html从定时任务说起自然界中定时任务无处不在,太阳每天东升西落,候鸟的迁徙,树木的年轮,人们每天按时上班,每个月按时发工资、交房租,四季轮换,潮涨潮落,等等,从某种意义上说,都可以认为是定时任务。大概很少有人想过,这些“定时”是怎样做到的。当然,计算机...

2019-01-10 11:26:56 26105 29

原创 Redis Cluster and Consistent Hashing

Redis有没有使用一致性哈希?很多人包括之前的我在内,一直认为reids集群的数据存储用的是一致性hash算法,后来读了亚马逊的《Dynamo: Amazon’s Highly Available Key-value Store》论文,感觉Redis不至于实现的这么复杂,带着一些疑问,翻了redis官网和客户端代码,发现Redis并没有使用一致性hash算法。 Redis集群使用...

2018-08-09 20:44:43 323

原创 那些惊艳的算法们(二)——一致性哈希

背景随着时代的发展,数据量与日俱增,相比纵向扩展单机的性能,人们更倾向于横向扩展,将多台一般的廉价机器组成集群来充当超级计算机,节省了大量的成本,代价是极大地增加了系统的复杂性。为了应对这些复杂性,一批又一批分布式领域的技术相继诞生,其中不乏一些看过之后令人拍案叫绝的精彩的想法。 从存储来说,数据量大的时候,一台机器不能胜任时,那么通常的做法是将数据分片,存储到多台机器上,通过集群的方...

2018-08-01 02:13:52 4102 2

原创 那些惊艳的算法们(一)——布隆过滤器

问题假设你现在要处理这样一个问题,你有一个网站并且拥有很多访客,每当有用户访问时,你想知道这个ip是不是第一次访问你的网站。这是一个很常见的场景,为了完成这个功能,你很容易就会想到下面这个解决方案: 把访客的ip存进一个hash表中,每当有新的访客到来时,先检查哈希表中是否有改访客的ip,如果有则说明该访客在黑名单中。你还知道,hash表的存取时间复杂度都是O(1),效率很高,因此...

2018-07-31 01:37:01 25640 8

原创 lock in share mode 和 select for update

许多同学或应该都听过”select … lock in share mode” 和 “select … for update”,但是或多或少会有以下几个疑问: 1. 这俩货是什么含义? 2. 和普通的select有什么区别呢? 3. 什么场景下用?用哪个?含义我们直接从mysql官网上看它们的定义:SELECT … LOCK IN SHARE MODE Sets a...

2018-07-11 01:57:58 493

原创 一次Java泛型引发的运行时异常

问题描述公司对redis进行了封装,提供了一套自己的客户端api,其中有两个hash相关的接口是这样的1. Long hincrBy(String key, String field, int amount)2. <T> Map<String, T> hgetAll(String key)业务中需要用到这两个接口,下面是我的用法: 1. ...

2018-07-11 00:01:43 404

原创 mysql事务隔离级别、脏读、幻读

Mysql事务隔离级别本身很重要,再加上可能是因为各大公司面试必问的缘故,在博客中出现的概率非常高,但不幸的是,中国的技术博客要么是转载,要么是照抄,质量参差不齐,好多结论都是错的,对于心怀好奇之心想弄明白问题的同学来说,这些博客是很危险的。 我当时也是看了各种版本的博客之后,翻官网,做实验,最终搞明白了一些事情,写在这里,希望对后来人有所帮助。水平有限,有不正确或者不明白的地方,欢迎指正...

2018-07-11 00:00:09 2215

原创 关于读书

文字是人类最伟大的发明之一。文字出现之前只能口口相传,出现之后,所有言论、思想都可以记录成册,流传于后世。我们无法跨越时间,但可以阅读前人留下的文字,或者将文字流传给后人,着实是一件很奇妙也很欣慰的事情(隐隐有一种战胜自然法则的快感,还有比读书和写作更爽的事么?)。 时间是个残酷的东西,好多书籍都在时间的流逝中消失了;时间也是好东西,那些经受住时间考验流传至今的书籍,都是前人思想的精华,能...

2018-07-10 23:54:55 998 1

原创 关于计算机和软件的思考

近来对计算机有所感悟,记录下来。什么是计算机当今时代,几乎各行各业都离不开计算机,种了一辈子地的老爸也会打开浏览器,每天看看新闻了。刚开始接触计算机时,大多数人都会感觉计算机无所不能,很强大但又很神秘,接通电源之后,世界便出现在你的眼前了。 可是,万能的计算机究竟是怎么一种东西呢,于是,怀着好奇心,我们找来螺丝刀拆开笨重主机的后盖,出现在我们面前的似乎并没有我们想象中那么神秘,...

2018-07-10 23:45:14 367

原创 First Unique Character in a String

Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.Examples:s = "leetcode"return 0.s = "loveleetcode",return 2.Note: 

2017-05-21 13:17:44 206

Designing Data-Intensive Applications

Designing Data-Intensive Applications 英文版 本书是分布式领域最好的技术书籍,个人认为,没有之一

2019-03-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除