狙击 K8s 用户的“流氓”专利:分布式软件定义网络 (DSDN)
背景 流氓专利(Patent Troll)通常是指一种专利滥用现象,其中专利的持有人或公司主要以专利诉讼和许可费为目的,而非通过生产或使用专利技术来进行创新。这类专利持有者有时被称为 专利流氓(Patent Trolls)。 流氓专利的主要 …
背景 流氓专利(Patent Troll)通常是指一种专利滥用现象,其中专利的持有人或公司主要以专利诉讼和许可费为目的,而非通过生产或使用专利技术来进行创新。这类专利持有者有时被称为 专利流氓(Patent Trolls)。 流氓专利的主要 …
本文将介绍 OpenTelemetry Profiling 的进展,以及快速体验 Profiling 的 eBPF 代理。关于有 OTEL Profile 的概念和实现,将在下一篇介绍。 虽然 Profiling 进展迅速,Profile …
上周在 KubeCon China 2024 大会上,我和社区伙伴们作为志愿者在 Cilium 项目展台与用户交流。有位用户询问 Cilium 是否能与 vCluster 集成,当时未能给出明确答复,特地回来后进行了测试。 答案是: …
极空间 Z4 Pro 入手已有两月余,现在来说说使用感受。 这之前我是坚定的网盘当,长期订阅 2T 的 iCloud,因为全家都是苹果的全家桶。去年底我自己换了小米 14,陆续换到了自己手边的苹果设备,唯独留下了生产力工具 MacBook。 …
更新于 2024/10/23,试用于 ZTM 版本 v0.3.1。 今天这篇来说说极空间的远程访问功能,产品页面对远程访问的描述是: 让极空间真正成为你家庭中的网络设备控制中心: 无需公网 IP 就可以便捷访问家中路由器、Docker 和智 …
写这篇文章的目的纯属留作记录,因为网上找不到相关的文章,枉我折腾半天,希望其他人不会重蹈覆辙。 月初,趁着 618 的活动下单了“心念已久”的 NAS - 极空间 Z4Pro。之所以在购物车中存在了这么久,因为我之前是妥妥的网盘党, …
几天前,K8s Network SIG 发布了 Gateway API(简称 gwapi)的 v1.1 版本,这个版本的发布包含了多项重要功能的 GA(一般可用),以及一些实验功能的引入。这两部分分别通过标准渠道和实验渠道发布。 发布渠道用 …
在本文中,我们将探讨如何利用 cert-manager 自动管理 Kubernetes Gateway 证书,以增强集群入口安全并提升管理效率。 背景 Kubernetes Gateway 或许,确切地应该称为 Kubernetes …
请原谅这个标题有点拗口。 如果你对 Apple Silicon、OrbStack、x86 架构或 K3s 集群中的任何一个概念不感兴趣,那么这篇文章可能不适合你。 背景 在我的工作流中,我依赖于 M1 MacBook Pro 和多个高效工具 …
持续交付基金会(Continuous Delivery Foundation,简称 CDF)前几天发布了最新的一期的 CICD 趋势报告。这份报告中的调查结果基于 SlashData 过去 8 次的调查数据,这些调查在 2020 年 Q3 …
去年学习 eBPF,分享过 几篇 eBPF 方面的学习笔记,都是面向 eBPF 的应用。为了准备下一篇文章,这次决定从 Linux 源码入手,深入了解 eBPF 的工作原理。因此这篇又是一篇学习笔记,假如你对 eBPF 的工作原理也感兴趣, …
OpenTelemetry Collector 有两个官方发行版:Core 和 Contrib。 Core 发行版是 Collector 的基础发行版,供 OTel 开发人员进行开发和测试。它包含一组基本的扩展、连接器、接收器、处理器和导出 …
坦白说,虽然我之前阅读过相关文档,但实际上从未亲自尝试运行 Backstage。我一直有种感觉,Backstage 不过是一个开发者门户而非开发者平台。上周在 分享我对平台工程的理解 后,朋友圈中有人提议我写一篇关于 Backstage 入 …
Gartner 将平台工程列为 2024 顶级战略技术趋势之一。 说起平台工程(Platform Engineering) ,经常听到有人说是:新瓶装(平台工程)旧酒(DevOps)。 今天根据过去自服务平台的实践经验,聊聊我所理解的平台工 …
在之前的文章陆续介绍了 如何在 Kubernetes 中使用 Otel 的自动插桩 以及 Otel 与 服务网格协同实现分布式跟踪,这两篇的文章都将目标聚焦在分布式跟踪中,而作为可观测性三大支柱之一的日志也是我们经常使用的系统观测手段,今天 …
在上一篇文章中,介绍了 如何在 k8s 中无侵入安装 Otel 探针 并实现了无侵入(某些语言还无法实现,比如 Go 的 eBPF 对内核的苛刻要求)的分布式跟踪。 这篇文章发出后有读者评论 javaagent 的“无侵入”一说,这里有必要 …
背景 OpenTelemetry 探针 OpenTelemetry(简称 Otel,最新的版本是 1.27) 是一个用于观察性的开源项目,提供了一套工具、APIs 和 SDKs,用于收集、处理和导出遥测数据(如指标、日志和追踪信息)。应用程 …
背景 在平时的工作中,为了方便在纯净的环境中进行测试,我经常需要在本地或者公有云环境中频繁地搭建和销毁集群。有时是在 我的 HomeLab 环境中,虽然 CPU 不强但胜在内存够大;后来有了微软 MVP 赠送的 Azure 额度之后,我也会 …
TL;DR 怎么理解 Service Weaver,就是一个应用中有很多的接口,这些接口间会互相调用。如果将操作系统进程(应用)比做一块电路板,接口比做元器件。可以选择将哪些元器件放入该电路板中,哪些元器件放入其他的电路板中。 同一块电路板 …
写这篇文章是来填 很久之前挖下的坑。 本文涉及组件的源码版本如下: Kubernetes 1.24 CRI 0.25.0 Containerd 1.6 容器运行时(Container Runtime)是负责管理和执行容器的组件。它负责将容器 …
Kubernetes 作为一项核心技术已成为现代应用程序架构的基础,越来越多的企业使用其作为容器编排系统。Kubernetes 集群经历了 从单 Kubernetes 集群到多 Kubernetes 集群、从多 Kubernetes …
在过去的文章中,我们曾 追踪过 Kubernetes 中的网络数据包,这篇文章将追踪 Kubernetes 中的 DNS 查询。 让我们以在 Pod 中解析 Service 完全限定域名(FQDN) …
CoreDNS 是一个开源的域名系统(DNS)服务器,用于将域名解析为 IP 地址以实现网络通信。它是一个用 Go 语言编写的可扩展 DNS 服务器,旨在取代传统的 DNS 服务器并提供更灵活、可配置的解析方案。 CoreDNS 提供了模块 …
还记得在 使用 Cilium 增强 Kubernetes 网络安全 示例中,我们通过设置网络策略限制钛战机 tiefighter 访问死星 deathstar 的 /v1/exhaust-port 端点, …
有幸参加 2023 年 GOTC(The Global Opensource Technology Conference,全球开源技术峰会)两天的活动,可谓是是收获满满。 这次参加活动本是带着两个任务来的:一个是看(一声) LF …
这篇之前写 Kubernetes 网络学习之 Cilium 与 eBPF 记录的内容,隔了几个月终于想起把笔记完成,作为探索 Cilium 工作原理的入门,也还是 Cilium 冰山一角,像是高级的网络策略、网络加密、BGP 网络、服务网格 …
Kubernetes 作为一项核心技术已成为现代应用程序架构的基础,越来越多的企业使用 Kubernetes 作为容器编排系统。 下面的数据来自 2020 CNCF Survey 的原始数据,可以看到使用 Kubernete 的企业占比达到 …
在 上篇文章 用了整篇的内容来描述网络数据包在 Kubernetes 网络中的轨迹,文章末尾,我们提出了一种假设:同一个内核空间中的两个 socket 可以直接传输数据,是不是就可以省掉内核网络协议栈处理带来的延迟? 不论是同 pod 中的 …
网络和操作系统内核,对我来说是既陌生又满是吸引,希望能够拨开层层迷雾找到背后的真相。 在 上一篇文章 中我深入探讨了 Kubernetes 网络模型,这次我想更深入一点:了解数据包在 Kubernetes 中的传输, …
背景 过去几年,公有云凭借着更高扩展性、灵活性、可靠性和安全性,吸引了大量的企业将应用程序部署到公有云上。随着业务规模的不断扩张,企业出于某些原因,如避免厂商锁定、追求更低的延迟、更高的可靠性等,选择将应用部署在更多的公有云上;也有些企业出 …
之前写过一篇 使用 Terraform 部署 Proxmox 虚拟机,那是一台 Core i7-8700 + 64G 的 Homelab 上搭建的虚拟机环境,这也是我一直以来的实验环境。直至去年加入微软 MVP 拿到了 Azure …
在 上一篇 文章中分享了分布式运行时 Dapr 的使用,在示例中将状态存储能力分离到 Dapr 运行时中,应用通过 Dapr API 来使用该能力。这篇文章将介绍如何通过 Ingress Controller(入口控制器)来访问 Dapr …
Dapr 分布式应用运行时 Distributed Application Runtime 的首字母缩写。有关多运行时,可以看下 Bilgin Ibryam 的 Multi-Runtime Microservices …
假期给小朋友装上了叨叨许久的 Minecraft(我的世界),为了体验安装的是 开源启动器 HMCL。其实这游戏我也关注比较久了,不过感觉太耗时间。但被小朋友拉上一起玩,便研究了下自建服务器。GitHub …
这是 Kubernetes 网络学习的第五篇笔记,也是之前计划中的最后一篇。 深入探索 Kubernetes 网络模型和网络通信 认识一下容器网络接口 CNI 源码分析:从 kubelet、容器运行时看 CNI 的使用 从 Flannel …
这是 Kubernetes 网络学习的第四篇笔记。 深入探索 Kubernetes 网络模型和网络通信 认识一下容器网络接口 CNI 源码分析:从 kubelet、容器运行时看 CNI 的使用 从 Flannel 学习 Kubernetes …
这是 Kubernetes 网络学习的第三篇笔记。 深入探索 Kubernetes 网络模型和网络通信 认识一下容器网络接口 CNI 源码分析:从 kubelet、容器运行时看 CNI 的使用(本篇) 从 Flannel …
写在最前,周末写到这篇的时候我就发现可能是给自己挖了很大的坑,整个 Kubernetes 网关相关的内容会非常复杂且庞大。 深入探索 Kubernetes 网络模型和网络通信 认识一下容器网络接口 CNI(本篇) 源码分析: …
这是 Kubernetes 网络学习的第一篇笔记。 深入探索 Kubernetes 网络模型和网络通信(本篇) 认识一下容器网络接口 CNI 源码分析:从 kubelet、容器运行时看 CNI 的使用 从 Flannel …
之前介绍过一些 Ingress 使用,比如 Ingress SSL 透传、Ingress 的多租户。从 Demo 看起来是创建 Ingress 之后,就能从集群外访问服务了。实际上除了 Ingress 的作用以外,还有 Kubernetes …
最近正在读 《Solving the Bottom Turtle》 这本书,这篇是对部分内容的总结和思考,由于内容较多,会分几篇来发。 这本书的副标题是: a SPIFFE Way to Establish Trust in Your …
GitHub Actions 是一个功能强大、“免费” 的 CI(持续集成)工具。 与之前介绍的 Tekton 类似,GitHub Actions 的核心也是 Pipeline as Code 也就是所谓的流水线即代码。二者不同的 …
软件供应链是指进入软件中的所有内容及其来源,简单地可以理解成软件的依赖项。依赖项是软件运行时所需的重要内容,可以是代码、二进制文件或其他组件,也可以是这些组件的来源,比如存储库或者包管理器之类的。包括代码的已知漏洞、受支持的版本、许可证信 …
目前我使用 Calibre 软件来管理电子书,电子书备份在 iCloud 中。但是每次推送电子书到 Kindle 都要打开电脑,感觉不够方便。如果能在手机端就可以操作岂不是更香。 遂将目标瞄向了 calibre-web, …
这是一篇发表于 2016 年的论文,是 BeyondCorp 系列的第三篇。虽然过去多年,但是在流量的精细化控制方面仍然值得学习。 BeyondCorp 是 Google 对零信任模型的实现。它建立在 Google 十年经验的基础上,并结合 …
自从用上 m1 的电脑,本地开发环境偶尔会遇到兼容性的问题。比如之前尝试用 Colima 在虚拟机中运行容器运行时和 Kubernetes,其实际使用的还是 aarch64 虚拟机,实际使用还是会有些差异。 手上有台之前用的黑苹果小主机,吃 …
Colima 是一个以最小化设置来在MacOS上运行容器运行时和 Kubernetes 的工具。支持 m1(文末讨论),同样也支持 Linux。 Colima 的名字取自 Container on Lima。Lima 是一个虚拟机工具,可以 …
此文是前段时间笔记的整理,之前自己对这方面的关注不够,因此做下记录。 有太多的文章介绍如何运行容器,然而如何停止容器的文章相对少很多。 根据运行的应用类型,应用的停止过程非常重要。如果应用要写文件,停止前要保证正确刷新数据并关闭文件; …
将应用部署到 Kubernetes 时通常会使用 Deployment、Service、Ingress,整个应用从部署到正常运行,经历的流程很长。从 kubectl apply YAML 文件,经过 apiserver、controller …
最近换上了 MacBook Pro 2021,也慢慢将工作转到新的电脑上。结束了一年多的黑白配,之前工作主力机是我的黑苹果,配置以及 OpenCore 的引导放在这里了。 为了稳定性,系统一直停留在了 10.15.4。 …
TL;DR 本文内容: 介绍 distroless 镜像、作用以及简单的使用 如何针对 distroless 容器的进行调试 临时容器(v.1.18+)的使用 Distroless 镜像 Distroless 容器, …
过去的工作中,我们使用微服务、容器化以及服务编排构建了技术平台。为了提升开发团队的研发效率,我们同时还提供了 CICD 平台,用来将代码快速的部署到 Openshift(企业级的 Kubernetes) 集群。 部署的第一步就是应用程序的容 …
前几天有朋友在问如何在某云上拉取 Tekton 的镜像,这种情况其实比较普遍不只是某云。工作中经常要用到过某些靠运气才能拉取到的镜像,这对工作来说真是极度的不友好。 因此也萌生了个想法,维护一个后网络友好的仓库镜像,在 Pod 创建时将镜像 …
感谢极狐团队为 GitLab(SaaS)本地化的努力,同时也感谢小马哥提供的内测资格。 最近突然想到了个点子,需要使用一个私有的镜像仓库。极狐GitLab 有提供容器镜像库,正好和 CICD 一起做个轻度体验。 …
为什么要在 arm64 平台上部署 Kubernetes,而且还是鲲鹏 920 的架构。说来话长 。。。 此处省略5000 字。 介绍下系统信息; 架构:鲲鹏 920(Kunpeng920) OS:openEuler 20.03 …
还不知道 Pipy 是什么的同学可以看下 GitHub 。 Pipy 是一个轻量级、高性能、高稳定、可编程的网络代理。Pipy 核心框架使用 C++ 开发,网络 IO 采用 ASIO 库。 Pipy 的可执行文件仅有 5M 左右,运行期的内 …
Kubernetes 使用有好几年了,但在今年 5 月才完成 CKA 的考试。虽说用了几年,还是提前刷了部分题熟悉下。 绝大部分题都是有在 minikube 的环境上操作过,只有部分比如升级集群受限于环境问题没有实地操作。 写在最前 保存常 …
自从参加了 Flomesh 的 workshop,了解了可编程网关 Pipy。对这个“小东西”充满了好奇,前后写了两篇文章,看了部分源码解开了其部分面纱。但始终未见其全貌,没有触及其核心设计。 不是有句话,“好奇害死猫”。其实应该还有后半 …
由于要给团队做一下关于 Flomesh 的分享,准备下材料。 “分享是最好的学习方法。” 上一回初探可编程网关 Pipy,领略了 Pipy 的“风骚”。从 Pipy 的 GUI 交互深入了解了 Pipy 的配置加载流程。 …
想到这个标题的时候,我第一时间想到的就是星爷的《唐伯虎点秋香》的这一幕。 当讨论起世界上最好的开发语言是什么的时候,Java 的粉丝们总会遇到这种场景: 吹:“Java 语法简单,容易上手!” 黑:“Java 启动慢,性能差,耗资源!” …
为什么 说起服务网格,这幅图大家肯定不会陌生。这就是服务网格的网络,也是网格架构的终极形态。 那在迁移到网格架构之前,我们的系统是什么样的? 我们的系统在演进的过程中,不可避免的会遇到各种 0 到 1 过程中的中间态。比如下面这种,可以比较 …
电影《功夫》中,火云邪神有句话:“天下武功无坚不摧,唯快不破。” 在 上一篇文章 中,我们写了第一个 Quarkus 应用,并尝试着构建了 legacy-jar 和 fast-jar。 今天来看一下 Quarkus 构建出来的本机可执行文件 …
Wikipedia上有关 Quarkus 的信息还很少,只有一句简单的介绍: Quarkus 是专为 OpenJDK HotSpot 和 GraalVM 定制的全栈 Kubernetes 原生 Java 应用程序框架。与如 Spring 之 …
最近在看 openservicemesh 相关内容,这周更新了 main 分支的代码之后。发现原本 v0.5.0 时可以正常代理的 mysql 流量,在新的 commit 中无法代理了。 开启 envoy 的 filter debug 日志 …
上篇扒了 HPA 的源码,但是没深入细节,今天往细节深入。 开局先祭出一张图: 为什么要有 Informer? Kubernetes 中的持久化数据保存在 etcd中,各个组件并不会直接访问 etcd,而是通过 api-server …
HPA - Horizontal Pod Autoscaler 的缩写,Pod 水平自动伸缩。通过对 Pod 负载的监控,来自动增加或者减少 Pod 的副本数量。 从字面意思来看,其主要包含了两部分: 监控 Pod 的负载 控制 Pod 的 …
Spring Cloud 中 Ribbon有在 Zuul 和 Feign 中使用,当然也可以通过在RestTemplate的 bean 定义上添加@LoadBalanced注解方式获得一个带有负载均衡更能的RestTemplate。 不过实 …
这是真实发生在生产环境的 case,实例启动后正常运行,而在注册中心的状态一直保持STARTING,而本地的状态为UP。导致服务的消费方无法发现可用实例。 这种情况的出现概率非常低,运行一年多未发现两个实例同时出现问题的情况,因此多实例运行 …
这篇文章是基于 Tekton Pipeline 的最新版本v0.12.1版本。 快速入门请参考:云原生 CICD: Tekton Pipeline 实战 ,实战是基于版本 v0.10.x。 Pipeline CRD 与核心资源的关系 $ k …
(Photo by Andrea Piacquadio from Pexels) 话说工作十多年,mysql 还真没用几年。起初是外企银行,无法直接接触到 DB;后来一直从事架构方面,也多是解决问题为主。 这次搭建海外机房,围绕时区大家做了 …
2021.4.30 更新: 最新的方案,请跳转新篇 Kubernetes 上如何控制容器的启动顺序。 背景 众所周知, Kubernetes Pod 内有两种容器: 初始化容器(init container)和应用容器(app …
[图片来自 https://www.facebook.com/sequenceprocess/] 问题: 入门到生产级的差距 昨天的文章《为 Go 应用创建 Docker 镜像》, 算是入门级的, 并不适用于生产级. 为什么? $ …
嗯嗯, 最近开始用 Golang 了. 今天需要为 Go 应用创建对象, 看了下官方博客. 拿 hello world 做个测试. 使用下面的命令创建个新的项目 $ mkdir -p …
背景 Tekton 的介绍请参考Tekton Pipeline 实战. 通常, CI/CD 事件应该包含如下信息: 确定事件的类型(比如 GitHub Push, GitLab Issue, Docker Hub Webhook 等) 可从 …
今天来说说日常在Kubernetes开发Java项目遇到的问题. 当我们新建一个项目的时候, 总是面临需要新建manifest, 平时都是copy+paste+modify. 能否以变成的方式来生成? 开发时的步骤也比较繁琐: docker …
Jib是Google Container Tools中的一个工具。 Jib builds optimized Docker and OCI images for your Java applications without a Docker …
根据官方的文档Docker Desktop on Mac vs. Docker Toolbox, Docker Desktop on Mac只提供了UNIX socket/var/run/docker.sock, 并未提供tcp的监听(默 …
上回说为了解决吞吐问题, 将zipkin-dependencies的版本升级到了2.3.0. 好景不长, 从某一天开始作业运行报错: Issue communicating with driver in heartbeater …
zipkin-dependencies是zipkin调用链的依赖分析工具. 系统上线时使用了当时的最新版本2.0.1, 运行一年之后随着服务的增多, 分析一天的数据耗时越来越多. 从最初的几分钟, 到最慢的几十小时(数据量18m). 最终返 …
在kafka中, topic的分区是并行计算的单元. 在producer端和broker端, 可以同时并发的写数据到不同的分区中. 在consumer端, Kafka总是将某个分区分配个一个consumer线程. 因此同一个消费组内的并行度 …
上一篇日志更新还是在去年的12月, 至今有差不多10个月没有更新了. 不是说没有东西可写, 而且想写的东西很多. 工作太忙, 不忙的时候又太懒, 归根结底还是太懒. 过去一年多都是在做基础架构方面的工作, 围绕技术中台展开的. 有很多技术需 …
安装Docker echo "http://dl-2.alpinelinux.org/alpine/edge/main" > /etc/apk/repositories echo …
相关配置 #如果路由转发请求发生超时(连接超时或处理超时), 只要超时时间的设置小于Hystrix的命令超时时间,那么它就会自动发起重试. 默认为false. 或者对指定响应状态码进行重试 zuul.retryable = true …
异常处理 Hystrix异常类型 HystrixRuntimeException HystrixBadRequestException HystrixTimeoutException RejectedExecutionException …
隔离策略 线程和线程池 客户端(库, 网络调用等)在各自的线程上运行. 这种做法将他们与调用线程隔开, 因此调用者可以从一个耗时的依赖调用"离开(walk away)" Hystrix使用单独的, 每个依赖的线程池作为约 …
运行时的流程图 构建HystrixCommand或者HystrixObservableCommand对象 第一步是构建一个HystrixCommand或HystrixObservableCommand对象来代表对依赖服务所做的请求。 将在请 …
rsyslogd资源占用高问题记录 问题: openshift集群安装在esxi的虚拟机上. 各个节点出现问题, 集群响应很慢. kswapd0进程cpu 90%多. rsyslogd进程内存 90%多. **先上总结: ** …
背景 Nginx运行在kubernets中, 反向代理service提供服务. kubernetes版本v1.9.1+a0ce1bc657. 问题: 配置如下: location ^~/info { proxy_pass: …
最近开始客串运维做CI/CD的规划设计, 主要是基于’Pipeline as Code in Jenkins’. 整理了下思路和技术点, 慢慢的写.
这一篇是关于基于角色的授权策略, 用的是Role-Based …
Jenkins CLI提供了SSH和Client模式. Docker运行Jenkins version: '3' services: jenkins: image: jenkins/jenkins:alpine ports: …
因为ProcessTreeKiller的存在, 构建过程中使用shell启动的进程在Job完成时都会被kill掉. 各种搜索以及ProcessTreeKiller提供的解决方式是修改BUILD_ID …
MacOS环境安装minishift 安装minishift cli brew cask install minishift 使用virtualbox安装 安装的时候可以指定HTTP代理, 拉取墙外镜像时需要; 还可以指定insecure的 …
Spring Cloud对Netflix Zuul做了封装集成, 使得在Spring Cloud环境中使用Zuul更方便. Netflix Zuul相关分析请看上一篇.
@EnableZuulProxy …
嵌入式的zuul代理
使用了Netfilx OSS的其他组件:
为什么要讨论这个问题, 工作中一个同事写的类使用了ConfigurationProperties, 只提供了标准的setter方法. 属性的访问, 提供了定制的方法. 可以参考EurekaClientConfigBean. 他使用的 …
Go语言是静态类型的变成语言. 编译的时候需要确定类型.
type user struct {
name string
email string
ext int …
变量使用var
声明, 如果变量不是定义在任何一个函数作用域内, 这个变量就是包级变量.
Go语言中, 所有变量都被初始化为其零值. 对于数值类型, 其零值是0; 对于字符串类型, 其零值是空字符 …
我的环境变量是这样的: export GOROOT=/usr/local/go export GOPATH=/Users/addo/Workspaces/go_w export GOBIN=$GOROOT/bin export …
SpringBoot Application启动部分的源码阅读. SpringApplication 常用的SpringApplication.run(Class, Args)启动Spring应用, 创建或者更 …
最近在调整系统的性能, 系统中正使用Jackson作为序列化工具. 做了下与fastJson, Avro, ProtoStuff的序列化吞吐对比. 由于只是做横向对比, 没有优化系统或者JVM任何参数. 服务器一般都用Linux, …
Kafka提供的基础保障可以用来构建可靠的系统, 却无法保证完全可靠. 需要在可靠性和吞吐之间做取舍. Kafka在分区上提供了消息的顺序保证. 生产的消息在写入到所有的同步分区上后被认为是已提交 (不需要刷到硬盘). 生产者可以选择在消息 …
背景 Kafka的性能众所周知,Producer支持acknowledge模式。即Kafka会想Producer返回消息发送的结果。但是在Java Client中,acknowledge的确认有两种:同步和异步。 同步是通过调 …
Kafka消费端的offset主要由consumer来控制, Kafka降每个consumer所监听的tocpic的partition的offset保存在__consumer_offsets主题中. consumer需要将处理完成的消息 …
核心思想 生产端一致性: 开启幂等和事务, 包含重试, 发送确认, 同一个连接的最大未确认请求数. 消费端一致性: 通过设置读已提交的数据和同时处理完成每一条消息之后手动提交offset. 生产端 public class …
Kafka提供“至少一次”交付语义, 这意味着发送的消息可以传送一次或多次. 人们真正想要的是“一次”语义,因为重复的消息没有被传递。 普遍地发声重复消息的情况有两种: 如果客户端尝试向集群发送消息并获取网络错误, 则重试可能会导致重复. …
按照重要性分类, 基于版本0.11.0.0 高 bootstrap.servers 一组host和port用于初始化连接. 不管这里配置了多少台server, 都只是用作发现整个集群全部server信息. 这个配置不需要包含集群所有的机器信 …
JSON Path是在使用Kubernetes API的过程中首次使用的. 使用API做扩缩容的时候, 发送整个Deployment的全文不是个明智的做法, 虽然可行. 因此便使用了JSON Patch. JsonObject item = …
使用openshift搭建的k8s的api创建Deployment,在启动的时候报下面的错误: Invalid value: “hostPath”: hostPath volumes are not allowed …
Persistent Volume 译自Persistent Volumes 介绍 管理存储是管理计算的独特问题。 PersistentVolume子系统为用户和管理员提供了一个API,其中提供了如何从如何使用存储提供存储的详细信息。为此, …
停止,stop,这里说的是真的停止。如何优雅的结束,这里就不提了。 这里要用Thread.stop()。众所周知,stop()方法在JDK中是废弃的。 该方法天生是不安全的。使用thread.stop()停止一个线程,导致释放(解锁)所有该 …
《Java并发编程实践》的注解中有提到这一概念。 The private constructor exists to avoid the race condition that would occur if the copy …
搭建Cassandra 使用docker创建Cassandra,方便快捷 docker pull cassandra:latest docker run -d --name cassandra -p 9042:9042 cassandra …
假设已经安装好Docker Springboot应用 pom添加依赖和构建插件 <parent> <groupId>org.springframework.boot</groupId> …
最近因为需求在看CAS相关的只是,由于需要后端调用,用到proxy(代理)模式。整理了下web flow和proxy web flow的流程。 Web Flow Proxy Web Flow
这几天生产上有台机器的Metaspace一直在告警,Metaspace使用达到了97%。使用-XX:MetaspaceSize=512m,告警也还在在持续,查看MC只有81536.0,显然这个参数没起作用。 也有人遇到类似的问题,并 …
背景 一个Tomcat实例中运行了三个应用,其中一个对接了Apereo的CAS系统。现在要求另外两个系统也对接CAS系统,问题就出现了: 应用启动后打开其中两个应用的任何一个,登录完成后系统都没有问题。唯独首选打开第三个,其他两个报 …
这里会用到几个概念高阶函数、函数字面量、参数组 高阶函数 high-order function 函数的一种,简单来说它包含了一个函数类型的参数或者返回值。 所谓的高阶是跟一阶函数相比,深入一下: 一个或多个参数是函数,并返回一个值。 返回 …
在网上搜索GreenPlum(GPDB)的数据源配置的时候,发现搜索结果都是用postgresql的配置。 import com.mchange.v2.c3p0.DataSources; import …
先说原理: val修饰的在定义的时候执行 def修饰的在调用的时候执行 直观的例子: //注释的行为REPL输出 def test: () => Int = { println("def called") val r …
版本 Centos7 Redis3.2.8 编译安装 wget http://download.redis.io/releases/redis-3.2.8.tar.gz tar -zxvf redis-3.2.8.tar.gz cd …
版本 Centos7 Postgresql9.2 Enable ssh service sshd start Open firewall for 22 firewall-cmd —state firewall-cmd —list-all …
最近Redis的使用中用的到key可能比较长,但是Redis的官方文档没提到key长度对性能的影响,故简单做了个测试。 环境 Redis和测试程序都是运行在本地,不看单次的性能,只看不同的长度堆读写性能的影响。 测试方法 使用长度分别 …
其实标题我想用《为什么foreach边循环边移除元素要用Iterator?》可是太长。 不用Iterator,用Collection.remove(),会报ConcurrentModificationException错误。 …
volatile通过保证对变量的读或写都是直接从内存中读取或直接写入内存中,保证了可见性;但是volatile并不足以保证线程安全,因为无法保证原子性,如count++操作: 将值从内存读入寄存器中 进行加1操作,内存保存到寄存器中 结果从 …
Haproxy为多个域名配置SSL 生成自签名证书 sudo mkdir /etc/ssl/atbug.com sudo openssl genrsa -out /etc/ssl/atbug.com/atbug.com.key 1024 …
这是工作中遇到的一个问题:测试环境部署出错,报了下面的问题。 Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains …
这是实际使用时遇到的问题:kafka api的版本是0.10,发现有重复消费问题;检查log后发现在commit offset的时候发生超时。 Auto offset commit failed for group test: Commit …
TheadPoolExecutor源码分析 ThreadPoolExecutor是多线程中经常用到的类,其使用一个线程池执行提交的任务。 实现 没有特殊需求的情况下,通常都是用Executors类的静态方法 …
Producer初始化 初始化KafkaProducer实例,同时通过Config数据初始化MetaData、NetWorkClient、Accumulator和Sender线程。启动Sender线程。 MetaData信息 记 …
概述 当使用Flume的时候,每个流程都包含了输入源、通道和输出。一个典型的例子是一个web服务器将事件通过RPC(搬入AvroSource)写入输入源中,输入源将其写入MemoryChannel,最后HDFS Sink消费事件将其写 …
AMQPConnection 实例初始化 创建Connection时会通过FrameHandlerFacotry创建一个SocketFrameHandler,SocketFrameHandler对Socket进行了封装。 public …
HashSet是一个包含非重复元素的集合,如何实现的,要从底层实现代码看起。 背景 首先非重复元素如何定义,看Set的描述: More formally, sets contain no pair of elements e1 and e2 …
多线程下的单例模式的实现,顺便做了反汇编。 public class MySingleton { private static MySingleton INSTANCE; private MySingleton() { } public …
spring amqp的原生并没有对Kryo加以支持,Kryo的优点就不多说了。 git地址:https://github.com/addozhang/spring-kryo-messaeg-converter public class …
工作中很多场景需要用到定时任务、延迟任务,常用的方法用crontab job、Spring的Quartz,然后扫描整张数据库表,判断哪些数据需要处理。控制的粒度没办法做到特定数据上。 后来就想到了Rabbitmq,Rabbitmq本来不没有 …