
几个常用的 MCP Server 收录平台
在人工智能与各类技术深度融合的当下,MCP(Model Context Protocol)发展迅猛热度不减。服务器的多样性和功能性不断拓展。对个人用户、AI 爱好者而言,找到合适的 MCP Server 收录平台,能更高效地获取工具和资源。 …
在人工智能与各类技术深度融合的当下,MCP(Model Context Protocol)发展迅猛热度不减。服务器的多样性和功能性不断拓展。对个人用户、AI 爱好者而言,找到合适的 MCP Server 收录平台,能更高效地获取工具和资源。 …
TL;DR 通过抓包分析,我们清晰地了解了 MCP 通信的全过程:从建立 SSE 连接、三步初始化、工具调用操作到最终的连接终止。可以看出,MCP 基于简单的 SSE 协议搭建了一个功能强大的工具调用框架,使 AI 代理能够便捷地调用外部工 …
TL;DR 在 AI 技术浪潮中,MCP 为服务集成带来了创新性思路,LLM 与 MCP 的组合更是为存量 API 服务注入新活力。 本文先阐述基于 Spring AI MCP 开发 MCP 服务的详细步骤,随后引入 OpenRewrite …
TL;DR API 作为数字世界的连接纽带,虽推动了开放生态的繁荣,却因协议碎片化、开发高成本陷入“巴别塔困境”。MCP(模型上下文协议)的诞生,标志着 AI 交互范式从“人工编码适配”迈向“机器自主协作”。通过标准化服务描述与上下文感知机 …
说起 Alfred,我可能算是重度也是中毒用户了。从 15 年开始接触 Mac 的时候就开始用,到现在也差不多 10 年了,应该是我日常使用频率最高的一款软件,没有之一。 手上这台 MBP 是从 21 年底开始用的,日使用频次有所降低。公司 …
TL;DR Spegel 是一个非常有意思的项目,可以帮助我们在 Kubernetes 集群中实现镜像共享,提高镜像拉取的速度,减少对外部镜像仓库的依赖。对于一些离线或者内网环境、带宽优化和成本控制、容灾和高可用等场景, …
在 上篇文章 中,我们通过基于 Kubernetes 注解的 OpenTelemetry 动态发现为应用添加了日志采集的能力。从 OpenTelemetry Collector 日志我们可以看到为两个示例应用创建了 FileLog 接收器 …
背景 在云原生时代,Kubernetes 已经成为容器编排的事实标准,越来越多的企业将其作为核心基础设施来运行和管理现代化应用。然而,随着微服务架构的普及和容器化工作负载的动态性增强,传统的监控和可观测性工具逐渐暴露出局限性——静态配置难以 …
LST 是 OpenRewrite 的核心,是 OpenRewrite 实现精准、可控代码修改的关键支柱。本文将介绍如何使用 JavaTemplate 创建复杂的 LST。 背景 在操作代码的过程中,可能需要添加、修改、删除代码片段。比如添 …
新年的钟声刚刚结束,站在 2025 年的第一天回望,2024 这一年,宛如一场盛大而深刻的旅程,为我解答了许多的人生谜题。如今,是时候一直挥手告别,迎接新的开始。 子曰:吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十 …
上周六有幸参与了 KubeSphere 社区和 Higress 社区联合举办的「云原生 + AI Meetup 广州站」的活动。在会上,我分享了一篇关于「从 LB Ingress 到 ZTM:集群服务暴露新思路」的主题演讲。在这里,我将分享 …
背景 随着技术的快速发展并日益复杂化,安全和合规性的要求不断提升,传统的授权方案已经难以满足企业不断变化的需求。授权系统面临着如下挑战: 动态和细粒度的授权需求增加:现代应用和服务需要能够对用户权限进行实时的管理,以适应快速变化的业务需求和 …
今天这篇我们来学习配方 Recipe 和访问者 Visitor,之所以一起介绍这两个是因为在 Recipe 的设计中使用了 访问者模式(Visitor Pattern)。 访问者模式是一种将算法与对象结构分开的软件设计模式。得益于这种分离, …
在上一篇文章中我们提到,LST 是 OpenRewrite 实现精准、可控代码修改的关键支柱。本篇将更深入地探讨 OpenRewrite 在代码解析过程中,究竟是如何保留代码原有的精确语义结构的。 什么是 LST LST …
最近的工作多与系统改造相关,涉及框架与平台的迁移。偶然接触到 OpenRewrite 这款有趣的工具,于是打算整理一些学习笔记,也是对学习过程的记录。后续还会持续探索并更新文章,只是目前尚不确定会写多少篇。 随着软件项目日趋复杂、版本迭代和 …
背景 流氓专利(Patent Troll)通常是指一种专利滥用现象,其中专利的持有人或公司主要以专利诉讼和许可费为目的,而非通过生产或使用专利技术来进行创新。这类专利持有者有时被称为 专利流氓(Patent Trolls)。 流氓专利的主要 …
本文将介绍 OpenTelemetry Profiling 的进展,以及快速体验 Profiling 的 eBPF 代理。关于有 OTEL Profile 的概念和实现,将在下一篇介绍。 虽然 Profiling 进展迅速,Profile …
上个月老崔发了 用 Obsidian 有效应对日常工作,介绍了日常使用的几个插件,其中有几个也是我常用的。正好最近在新的环境中配置 Obsidian,特此记录下常用的插件和技巧。 笔记这件事持续 N 多年了,从下面的数据来看算是重度笔记用户 …
上周在 KubeCon China 2024 大会上,我和社区伙伴们作为志愿者在 Cilium 项目展台与用户交流。有位用户询问 Cilium 是否能与 vCluster 集成,当时未能给出明确答复,特地回来后进行了测试。 答案是: …
此文为原文翻译,仅供参考,不代表本人立场。翻译难免有疏漏,欢迎提出建议反馈。 本文翻译自 Hazel Raoult 的 How to Optimize Security in Cloud-Native Applications。 近年来,企 …
极空间 Z4 Pro 入手已有两月余,现在来说说使用感受。 这之前我是坚定的网盘当,长期订阅 2T 的 iCloud,因为全家都是苹果的全家桶。去年底我自己换了小米 14,陆续换到了自己手边的苹果设备,唯独留下了生产力工具 MacBook。 …
Obsidian 插件 Image Upload Toolkit 刚刚发布了 0.6.0 版本。在最新版本中,新增了 AWS S3 支持,升级到最新版本后,您可以将文档中的图片上传到 AWS S3 存储。 Image Upload …
周末检查博客草稿,发现了这篇。记得当时是与 Kubernetes 自动化诊断工具:k8sgpt-operator 一起写的,算算过去了一年之久,这拖延症也算是病入膏肓了。原本想使用 K8sGPT + LocalAI 的方案, …
更新于 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)。 今天根据过去自服务平台的实践经验,聊聊我所理解的平台工 …
接近年尾,又到了年终回顾的时刻。往年总结时总感叹时间的迅速流逝,似乎上一次总结才刚刚结束。今年,感到一丝庆幸——庆幸时间的飞逝,它告诉我没有什么是时间不能解决的。 去年,我用“超速”来形容 2022 年的节奏。而对于 2023 年,我选择 …
2025.2.15 更新:支持 Loki 3.3.2。 在之前的文章陆续介绍了 如何在 Kubernetes 中使用 Otel 的自动插桩 以及 Otel 与 服务网格协同实现分布式跟踪,这两篇的文章都将目标聚焦在分布式跟踪中,而作为可观测 …
在上一篇文章中,介绍了 如何在 k8s 中无侵入安装 Otel 探针 并实现了无侵入(某些语言还无法实现,比如 Go 的 eBPF 对内核的苛刻要求)的分布式跟踪。 这篇文章发出后有读者评论 javaagent 的“无侵入”一说,这里有必要 …
背景 OpenTelemetry 探针 OpenTelemetry(简称 Otel,最新的版本是 1.27) 是一个用于观察性的开源项目,提供了一套工具、APIs 和 SDKs,用于收集、处理和导出遥测数据(如指标、日志和追踪信息)。应用程 …
Tetragon 是一种灵活的安全可观察性和运行时策略执行工具,可直接使用 eBPF 应用策略和过滤,从而减少了监控、进程跟踪以及实时执行策略的开销。 Tetragon 提供了如下功能: 监控进程执行 监控文件操作 监控网络活动 执行策略 …
更新于 2025 年 3 月 1 日:完整脚本已添加更多功能,并提交至 GitHub 仓库 k3s-cluster-automation。 单命令集群部署:通过 SSH 一键部署含 1 个主节点 + N 个工作节点的 K3s 集群。 组 …
TL;DR 怎么理解 Service Weaver,就是一个应用中有很多的接口,这些接口间会互相调用。如果将操作系统进程(应用)比做一块电路板,接口比做元器件。可以选择将哪些元器件放入该电路板中,哪些元器件放入其他的电路板中。 同一块电路板 …
本文翻译自由 David Vroom, James Mulcahy, Ling Yuan, Rob Gulewich 编写的 Netflix 博客 Zero Configuration Service Mesh with On-Demand …
前几天 Gateway API 宣布在 0.8.0 中支持服务网格,这意味着 GAMMA(Gateway API for Mesh Management and Administration)有了新进展,虽然目前还是实验阶段。去年 6 …
之前写 在 Kubernetes 集群中使用 MetalLB 作为 LoadBalancer(下)- BGP 时,我曾在 OpenWRT 安装 FRR 来进行了测试。需要 OpenWRT 的环境不免会有些繁琐,假如只是做些更简单的测试,比如 …
写这篇文章是来填 很久之前挖下的坑。 本文涉及组件的源码版本如下: Kubernetes 1.24 CRI 0.25.0 Containerd 1.6 容器运行时(Container Runtime)是负责管理和执行容器的组件。它负责将容器 …
介绍 Fortio 是一个用于微服务性能负载、性能、延迟测试和 Web UI 的工具。它通常与 Istio 和其他服务网格解决方案一起使用,但可以独立使用来测试网络延迟和 HTTP/gRPC 的负载特性。以下是关于 Fortio 的一些主要 …
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 端点, …
这篇文章主要来介绍下我开发的 Obsidian 图片上传插件 Image Upload Toolkit。 背景 为什么开发这个插件?这还要从去年说起。 去年我感觉到使用了 6 年的 Mweb Pro 已经无法满足我的需求了, …
有幸参加 2023 年 GOTC(The Global Opensource Technology Conference,全球开源技术峰会)两天的活动,可谓是是收获满满。 这次参加活动本是带着两个任务来的:一个是看(一声) LF …
Podman(POD MANager)是一个跨平台的容器管理工具,可用于管理容器、镜像、卷以及以容器组形式存在的 Pod。Podman 可以在 Linux 上直接运行容器,但在像 macOS 和 Windows 这样的平台,是通过虚拟机间接 …
这篇之前写 Kubernetes 网络学习之 Cilium 与 eBPF 记录的内容,隔了几个月终于想起把笔记完成,作为探索 Cilium 工作原理的入门,也还是 Cilium 冰山一角,像是高级的网络策略、网络加密、BGP 网络、服务网格 …
背景 在 Kubernetes 上,从部署 Deployment 到正常提供服务,整个流程可能会出现各种各样问题,有兴趣的可以浏览 Kubernetes Deployment 的故障排查可视化指南(2021 中文版)。从可视化指南也可能看出 …
Kubernetes 作为一项核心技术已成为现代应用程序架构的基础,越来越多的企业使用 Kubernetes 作为容器编排系统。 下面的数据来自 2020 CNCF Survey 的原始数据,可以看到使用 Kubernete 的企业占比达到 …
今天读到这篇文章,觉得不错就翻译一下。文章是翻译自 Steef-Jan Wiggers The Commoditization of the Software Stack:How Application-first Cloud …
在 上篇文章 用了整篇的内容来描述网络数据包在 Kubernetes 网络中的轨迹,文章末尾,我们提出了一种假设:同一个内核空间中的两个 socket 可以直接传输数据,是不是就可以省掉内核网络协议栈处理带来的延迟? 不论是同 pod 中的 …
网络和操作系统内核,对我来说是既陌生又满是吸引,希望能够拨开层层迷雾找到背后的真相。 在 上一篇文章 中我深入探讨了 Kubernetes 网络模型,这次我想更深入一点:了解数据包在 Kubernetes 中的传输, …
背景 过去几年,公有云凭借着更高扩展性、灵活性、可靠性和安全性,吸引了大量的企业将应用程序部署到公有云上。随着业务规模的不断扩张,企业出于某些原因,如避免厂商锁定、追求更低的延迟、更高的可靠性等,选择将应用部署在更多的公有云上;也有些企业出 …
之前写过一篇 使用 Terraform 部署 Proxmox 虚拟机,那是一台 Core i7-8700 + 64G 的 Homelab 上搭建的虚拟机环境,这也是我一直以来的实验环境。直至去年加入微软 MVP 拿到了 Azure …
在 上一篇 文章中分享了分布式运行时 Dapr 的使用,在示例中将状态存储能力分离到 Dapr 运行时中,应用通过 Dapr API 来使用该能力。这篇文章将介绍如何通过 Ingress Controller(入口控制器)来访问 Dapr …
本文翻译自 Bilgin Lbryam 的 Unbundling: The Natural Evolution of Tech Stacks,翻译难免有所疏漏,有建议请反馈。 “unbundling” 如何翻译,有点纠结,我一度将其翻译成“ …
Dapr 分布式应用运行时 Distributed Application Runtime 的首字母缩写。有关多运行时,可以看下 Bilgin Ibryam 的 Multi-Runtime Microservices …
假期给小朋友装上了叨叨许久的 Minecraft(我的世界),为了体验安装的是 开源启动器 HMCL。其实这游戏我也关注比较久了,不过感觉太耗时间。但被小朋友拉上一起玩,便研究了下自建服务器。GitHub …
这是 Kubernetes 网络学习的第五篇笔记,也是之前计划中的最后一篇。 深入探索 Kubernetes 网络模型和网络通信 认识一下容器网络接口 CNI 源码分析:从 kubelet、容器运行时看 CNI 的使用 从 Flannel …
快,是真的快,感觉 与 2021 再见 就在几天前,然而回头又想不到做了什么,该总结什么。 是的,这篇与技术无关。 工作 去年(我现在可以称其为去年)换了现在的工作,换了新的方向,对于未知当初的几个月充满了新鲜与忐忑。 …
本文翻译自 ContainerJournal 的 2022 年度文章之一 《Implementing Zero-Trust on Kubernetes》,作者 Deepak Goel 在文中分享了 Kubernetes 上实施零信任的三个最 …
这是 Kubernetes 网络学习的第四篇笔记。 深入探索 Kubernetes 网络模型和网络通信 认识一下容器网络接口 CNI 源码分析:从 kubelet、容器运行时看 CNI 的使用 从 Flannel 学习 Kubernetes …
这是 Kubernetes 网络学习的第三篇笔记。 深入探索 Kubernetes 网络模型和网络通信 认识一下容器网络接口 CNI 源码分析:从 kubelet、容器运行时看 CNI 的使用(本篇) 从 Flannel …
写在最前,周末写到这篇的时候我就发现可能是给自己挖了很大的坑,整个 Kubernetes 网关相关的内容会非常复杂且庞大。 深入探索 Kubernetes 网络模型和网络通信 认识一下容器网络接口 CNI(本篇) 源码分析: …
这是 Kubernetes 网络学习的第一篇笔记。 深入探索 Kubernetes 网络模型和网络通信(本篇) 认识一下容器网络接口 CNI 源码分析:从 kubelet、容器运行时看 CNI 的使用 从 Flannel …
上周在写 K8s 多集群的流量调度 的 demo 部分时需要不停地在多个集群中安装组件、部署应用,或者执行各种命令。当时是通过 Linux shell 脚本并通过工具 kubectx 进行集群的切换,像这样: 或者这样: 操作繁琐,很是痛 …
由于各种原因,采用 Kubernetes 的企业内部存在着几个、几十甚至上百个集群。比如处于研发流程上的考虑,不同环境下都存在独立的集群;监管层面的考虑,就地存储的用户数据需要搭配应用集群;单个集群的容量限制,无法满足业务体量;可用性要求的 …
首先这篇文章不讲任何政策的东西,没有对政策和人员的吐槽。相反,整个过程中感受到的都是理解和支持。正如标题所写回家的过程有曲折,但影响不大,而结果让我有点想笑:就这? 作为一名程序员,有必要对问题做个复盘,摸清整个流程,了解下支撑咱们疫情防控 …
服务网格以典型的 sidecar 模型为人熟知,将 sidecar 容器与应用容器部署在同一个 Pod 中。虽说 sidecar 并非很新的模型(操作系统的 systemd、initd、cron 进程;Java 的多线程),但是以这种与业务 …
背景 在《SMI 与 Gateway API 的 GAMMA 倡议意味着什么?》的一文中,介绍过 Kubernetes Gateway API 处理东西向(网格)流量的可能性。让我们重新看下 Gateway API 中对流量定义(路由)的定 …
之前介绍过一些 Ingress 使用,比如 Ingress SSL 透传、Ingress 的多租户。从 Demo 看起来是创建 Ingress 之后,就能从集群外访问服务了。实际上除了 Ingress 的作用以外,还有 Kubernetes …
金丝雀发布是服务治理中的重要功能,在发布时可以可控地将部分流量导入新版本的服务中;其余的流量则由旧版本处理。发布过程中,可以逐步增加新版本服务的流量。通过测试,可以决定是回滚还是升级所有实例,停用旧版本。 有了金丝雀发布,使用真实流量对服务 …
最近正在读 《Solving the Bottom Turtle》 这本书,这篇是对部分内容的总结和思考,由于内容较多,会分几篇来发。 这本书的副标题是: a SPIFFE Way to Establish Trust in Your …
这篇是 Buoyant 的创始人 William Morgan 文章《What Does Zero Trust Mean for Kubernetes?》 的翻译,文章很好的解释了什么是零信任、为什么要实施零信任,以及服务网格如何以最小的代 …
Docker 在刚刚发布的 Docker Desktop 4.12.0 中,加入了实验特性:进一步集成 containerd,使用 containerd 来管理和存储镜像。 为什么说是“进一步集成”?这就要翻翻 Docker …
kube-ovn 从名字不难看出其是一款云原生的网络产品,将 SDN 等能力带入云原生领域。让 ovn/ovs 的使用更容易,屏蔽了复杂度,降低了使用的难度,并与云原生进行了结合。 借助 OVS/OVN 在 SDN 领域成熟的能 …
8 月 24 日,发明服务网格的公司 Buoyant 发布了 Linkerd 2.12,这是时隔近一年的版本发布。不知道大家的对新版本期待如何,在我来看新版本中的功能对于一年的时间来说确实不算多,但是我想说的是 Linkerd …
本文的源码基于 Kubernetes v1.24.0,容器运行时使用 Containerd 1.5,从源码来分析 kubectl port-forward 的工作原理。 通过 port-forward 流程的分析,梳理出 kubectl …
就在上周 Gateway API 发布版本 0.5.0,其中几个最重要的 CRD Gateway、GatewayClass 以及 HTTPRoute 第一次升级到了 beta 版本。升级的详细内容这里不做详谈,我也想说说的是与版本一同发布 …
GitHub Actions 是一个功能强大、“免费” 的 CI(持续集成)工具。 与之前介绍的 Tekton 类似,GitHub Actions 的核心也是 Pipeline as Code 也就是所谓的流水线即代码。二者不同的 …
本文翻译自 Jack Roper 的文章 Kubernetes Best Practice。 译者:文章中作者从应用程序开发、治理和集群配置三个方面给出了一些 Kubernetes 的最佳实践,同时翻译过程中也加入了我过往的一些使用经验。有 …
本篇文章译自 SUNKU RANGANATH 的 4 Types of Edge Computing - Broadly Categorized。文章通过 往返终端设备和数据中心的延迟 来对边缘计算的类型进行大致的分类,通俗易懂,方便大家对 …
在平时的工作中,不知道你有没有经常需要构建容器镜像进行测试,并且不一定是在构建环境中使用镜像。这时候就需要将镜像推送到镜像仓库做中转,然后在别处拉取并运行容器。久而久之,因为忘记清理镜像仓库中的“垃圾”镜像越来越多。 当然, …
软件供应链是指进入软件中的所有内容及其来源,简单地可以理解成软件的依赖项。依赖项是软件运行时所需的重要内容,可以是代码、二进制文件或其他组件,也可以是这些组件的来源,比如存储库或者包管理器之类的。包括代码的已知漏洞、受支持的版本、许可证信 …
本人算是个 Alfred 的重度依赖者了(上图是去年换了新电脑后的使用数据),Alfred 也算 Mac 上的第一款付费软件,买的 mega 版。安装的 workflow 估计有几十个,不过常用的估计有十几个吧。 用了几年,一直都秉承着能不 …
目前我使用 Calibre 软件来管理电子书,电子书备份在 iCloud 中。但是每次推送电子书到 Kindle 都要打开电脑,感觉不够方便。如果能在手机端就可以操作岂不是更香。 遂将目标瞄向了 calibre-web, …
这篇文章主要使用"核弹级"命令git-filter-branch, 对代码仓库进行整理. 这里的整理包括子目录重命名, 子目录独立为新项目(保留或者不保留原来的结构)等. 整理之后, 原来的提交信息都会完好的保存下来, …
TL;DR 本文从服务网格发展现状、到 Open Service Mesh 源码,分析开放服务网格中的开放是什么以及如何开放。笔者总结其开放体现在以下几点: 资源提供者(Provider)接口和资源的重新封装:通过资源提供者接口抽象计算平台 …
使用 Kubernetes 时,经常会遇到一些棘手的网络问题需要对 Pod 内的流量进行抓包分析。然而所使用的镜像一般不会带有 tcpdump 命令,过去常用的做法简单直接暴力:登录到节点所在节点,使用 root 账号进入容器, …
这是一篇发表于 2016 年的论文,是 BeyondCorp 系列的第三篇。虽然过去多年,但是在流量的精细化控制方面仍然值得学习。 BeyondCorp 是 Google 对零信任模型的实现。它建立在 Google 十年经验的基础上,并结合 …
在上一篇《在 Kubernetes 集群中使用 MetalLB 作为 LoadBalancer(上)- Layer2》中,我们使用 MetalLB 的 Layer2 模式作为 LoadBalancer 的实现,将 Kubernetes 集群 …
这是系列文章的上篇,下篇《在 Kubernetes 集群中使用 MetalLB 作为 LoadBalancer(下)- BGP》。 TL;DR 网络方面的知识又多又杂,很多又是系统内核的部分。原本自己不是做网络方面的,系统内核知识也薄弱。但 …
TL;DR 在本篇,我们分别使用了 Kubernetes 原生的网络策略和 Cilium 的网络策略实现了 Pod 网络层面的隔离。不同的是,前者只提供了基于 L3/4 的网络策略;后者支持 L3/4、L7 的网络策略。 通过网络策略来提升 …
TL;DR 本文介绍并安装体验了极简 Kubernetes 发行版,也顺便分析学习下编译的流程。 背景 k8e 本意为 kuber easy,是一个 Kubernetes 的极简发行版,意图让云原生落地部署 Kubernetes 更轻 …
译者注: 这篇文章很全面的罗列出了 Kubernetes 中涉及的网络知识,从 Linux 内核的网络内容,到容器、Kubernetes,一一进行了详细的说明。 文章篇幅有点长,不得不说,网络是很复杂很麻烦的一层,但恰恰这层多年来变化不 …
在《Kubernetes 的自动伸缩你用对了吗?》 一文中详细说明了如何使用 Kubernetes 的自动伸缩。在 Kubernetes 中弹性伸缩主要有三种:HPA、VPA、CA。本文不再详细说明,有兴趣的可以看那篇文章。 …
本文翻译自 Vivian Hu 的 《eBPF and Wasm: Exploring the Future of the Service Mesh Data Plane》。 在 2021 年 12 月 2 日,Cilium …
自从用上 m1 的电脑,本地开发环境偶尔会遇到兼容性的问题。比如之前尝试用 Colima 在虚拟机中运行容器运行时和 Kubernetes,其实际使用的还是 aarch64 虚拟机,实际使用还是会有些差异。 手上有台之前用的黑苹果小主机,吃 …
Colima 是一个以最小化设置来在MacOS上运行容器运行时和 Kubernetes 的工具。支持 m1(文末讨论),同样也支持 Linux。 Colima 的名字取自 Container on Lima。Lima 是一个虚拟机工具,可以 …
译者注: 本文篇幅较长,有助于了解 FaaS 和 OpenFaaS。作者分别从开发人员和运维人员的视角来了解 OpenFaaS,对了解新的技术是个很好的方式。 本文翻译自 Ivan Velichko 的 OpenFaaS - Run …
距离上个版本 用 Pipy 实现 OPA,已经过去快半年了。当初使用Pipy 实现了可信镜像仓库的检查,那时的版本实现起来会稍微复杂,从策略仓库到证书创建到Admission Webhook 的创建都需要大量的人工操作,配置和逻辑也还是耦合 …
随着 IT 技术的发展,AI、区块链和大数据等技术提升了对应用毫秒级扩展的需求,开发人员也面临着的功能快速推出的压力。混合云是新常态,数字化转型是保持竞争力的必要条件,虚拟化成为这些挑战的基本技术。 在虚拟化的世界,有两个词耳熟能详:虚拟机 …
此文是前段时间笔记的整理,之前自己对这方面的关注不够,因此做下记录。 有太多的文章介绍如何运行容器,然而如何停止容器的文章相对少很多。 根据运行的应用类型,应用的停止过程非常重要。如果应用要写文件,停止前要保证正确刷新数据并关闭文件; …
将应用部署到 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 …
写在最前 和上一篇《使用 Flomesh 强化 Spring Cloud 服务治理》一样,这次同样是在无代码侵入的情况下对 Dubbo 服务治理的提升。 更多治理场景陆续添加中, …
写在最前 这篇是关于如何使用 Flomesh 服务网格来强化 Spring Cloud 的服务治理能力,降低 Spring Cloud 微服务架构落地服务网格的门槛,实现“自主可控”。 文档在 github 上持续更新,欢迎大家一起讨 …
趁着换工作的间隙,来一场“蓄谋已久”、“说走就走”的旅行。 新疆,是一个美丽而遥远的地方。前段时间看了李娟的《冬牧场》,更是提起了我对新疆对游牧哈萨克族的兴趣。以至后来梦中见到一望无际的戈壁滩,让自己下定决心做出改变。 背景 这次北疆之行 …
有别于前些天的文章 - 常用的几款工具让 Kubernetes 集群上的工作更容易 偏重于工具类来提升工作效率,今天这篇文章更加适合用来做选型时的参考。 文档翻译自 Kubernetes Essential Tools: 2021,篇幅较 …
还不知道 Pipy 是什么的同学可以看下 GitHub 。 Pipy 是一个轻量级、高性能、高稳定、可编程的网络代理。Pipy 核心框架使用 C++ 开发,网络 IO 采用 ASIO 库。 Pipy 的可执行文件仅有 5M 左右,运行期的内 …
如何使用 Open Policy Agent 实现准入策略控制,可以参考这里 本文翻译自 Open Policy Agent: The Top 5 Kubernetes Admission Control Policies …
笔者:Kubernetes 抽象了资源和工作负载的操作模式,统一了工具集,实现人机接口的标准化。正如类 Docker 工具提供了应用运行时的操作模式;Spring Framework 提供了 Java 应用的开发模式。 Kubernetes …
从互联网(或可信镜像仓库库以外的任何地方)拉取未知镜像会带来风险——例如恶意软件。但是还有其他很好的理由来维护单一的可信来源,例如在企业中实现可支持性。通过确保镜像仅来自受信任的镜像仓库,可以密切控制镜像库存,降低软件熵和蔓延的风险,并提高 …
Kubernetes 使用有好几年了,但在今年 5 月才完成 CKA 的考试。虽说用了几年,还是提前刷了部分题熟悉下。 绝大部分题都是有在 minikube 的环境上操作过,只有部分比如升级集群受限于环境问题没有实地操作。 写在最前 保存常 …
自从参加了 Flomesh 的 workshop,了解了可编程网关 Pipy。对这个“小东西”充满了好奇,前后写了两篇文章,看了部分源码解开了其部分面纱。但始终未见其全貌,没有触及其核心设计。 不是有句话,“好奇害死猫”。其实应该还有后半 …
之前写过一篇 介绍了工具加速云原生 Java 开发。 其实日常工作中在集群上的操作也非常多,今天就来介绍我所使用的工具。 kubectl-alias 使用频率最高的工具,我自己稍微修改了一下,加入了 StatefulSet 的支持。 这个是 …
本文详细介绍了 Jenkins 如何通过 tekton-client-plugin 实现与 Kubernetes 上的 Tekton Pipeline 交互,包括 Kubernetes 上安装 Jenkins、Tekton …
更新历史: v1:2020.1.21 基于 Tekton Pipline v0.9.0 v2(当前):2021.6.22 基于 Tekton Pipeline v0.25.0 Tekton 是 Google 开源的 Kubernetes 原 …
本文主要介绍 kubelet 功能、核心组件,以及启动流程的源码分析,总结了 kubelet 的工作原理。 kubelet 简介 从官方的架构图中很容易就能找到 kubelet 执行 kubelet -h 看到 kubelet 的功能介绍: …
由于要给团队做一下关于 Flomesh 的分享,准备下材料。 “分享是最好的学习方法。” 上一回初探可编程网关 Pipy,领略了 Pipy 的“风骚”。从 Pipy 的 GUI 交互深入了解了 Pipy 的配置加载流程。 …
本文翻译自 learnk8s 的 Architecting Kubernetes clusters — choosing the best autoscaling strategy,有增删部分内容。 TL;DR: 在默认设置下, …
有幸参加了 Flomesh 组织的workshop,了解了他们的 Pipy 网络代理,以及围绕 Pipy 构建起来的生态。Pipy 在生态中,不止是代理的角色,还是 Flomesh 服务网格中的数据平面。 整理一下,做个记录, …
Quarkus 的文章之前写过三篇了,讲过了 Quarkus 的小而快。 Hello, Quarkus 应"云"而生的 Java 框架 Quarkus:构建本机可执行文件 谁说 Java …
在配置系统监控的时候,是不是即使绞尽脑汁监控的也还是不够全面,或者不知如何获取想要的指标。 Awesome Prometheus alerts 维护了一套开箱即用的 Prometheus 告警规则集合,有 300 多个告警规则。同时,还是说 …
去年写过一篇博客:控制 Pod 内容器的启动顺序,分析了 TektonCD 的容器启动控制的原理。 为什么要做容器启动顺序控制?我们都知道 Pod 中除了 init-container 之外,是允许添加多个容器的。类似 TektonCD …
本文由 Addo Zhang 翻译自 A Reference Architecture for Fine-Grained Access Management on the Cloud 什么是访问管理? 访问管理是识别用户或一组用户是否应该能 …
想到这个标题的时候,我第一时间想到的就是星爷的《唐伯虎点秋香》的这一幕。 当讨论起世界上最好的开发语言是什么的时候,Java 的粉丝们总会遇到这种场景: 吹:“Java 语法简单,容易上手!” 黑:“Java 启动慢,性能差,耗资源!” …
为什么 说起服务网格,这幅图大家肯定不会陌生。这就是服务网格的网络,也是网格架构的终极形态。 那在迁移到网格架构之前,我们的系统是什么样的? 我们的系统在演进的过程中,不可避免的会遇到各种 0 到 1 过程中的中间态。比如下面这种,可以比较 …
电影《功夫》中,火云邪神有句话:“天下武功无坚不摧,唯快不破。” 在 上一篇文章 中,我们写了第一个 Quarkus 应用,并尝试着构建了 legacy-jar 和 fast-jar。 今天来看一下 Quarkus 构建出来的本机可执行文件 …
Wikipedia上有关 Quarkus 的信息还很少,只有一句简单的介绍: Quarkus 是专为 OpenJDK HotSpot 和 GraalVM 定制的全栈 Kubernetes 原生 Java 应用程序框架。与如 Spring 之 …
本文译自 The Evolution of Distributed Systems on Kubernetes 在 3 月份的 QCon 上,我做了一个关于 Kubernetes 的分布式系统进化的演讲。首先,我想先问一个问题,微服务之后是 …
本文译自 Cloud Native Predictions for 2021 and Beyond 原文发布在 Chris Aniszczyk 的个人博客 我希望每个人都有一个美好的假期,因为 2021 年 1 月的前几周一直非常疯狂,从叛 …
本文译自 Application architecture: why it should evolve with the market 最初由Mia Platform团队发布在Mia Platform的博客上 如今,IT 挑战在于通过有效选 …
最近在看 openservicemesh 相关内容,这周更新了 main 分支的代码之后。发现原本 v0.5.0 时可以正常代理的 mysql 流量,在新的 commit 中无法代理了。 开启 envoy 的 filter debug 日志 …
虽然不写 C++,但是看点代码还是能看懂。Envoy 的功能配置复杂,有时候处理问题还是需要看下源码的。 Vim 或者 Code 就算了,我只是阅读源码需要关联跳转就行。在 Clion 中,代码的关联跳转需要一个CMakeLists.txt …
上篇扒了 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;后来一直从事架构方面,也多是解决问题为主。 这次搭建海外机房,围绕时区大家做了 …
这样文章通过Google翻译和人工逐字修改的方式完成的,某些位置也加上自己的理解。如有错误,请指出。 翻译这篇文章的目的其实是为了自己加深对微服务、分布式架构以及多运行时架构的理解。整篇文章从”战略“上分析了微服务”从古至今“解决的问题,以 …
2021.4.30 更新: 最新的方案,请跳转新篇 Kubernetes 上如何控制容器的启动顺序。 背景 众所周知, Kubernetes Pod 内有两种容器: 初始化容器(init container)和应用容器(app …
[图片来自 https://www.facebook.com/sequenceprocess/] 问题: 入门到生产级的差距 昨天的文章《为 Go 应用创建 Docker 镜像》, 算是入门级的, 并不适用于生产级. 为什么? $ …
嗯嗯, 最近开始用 Golang 了. 今天需要为 Go 应用创建对象, 看了下官方博客. 拿 hello world 做个测试. 使用下面的命令创建个新的项目 $ mkdir -p …
Trigger的介绍看 这里. 接上文 Tekton Pipeline 实战 , 我们为某个项目创建了一个Pipeline, 但是执行时通过 PipelineRun 来完成的. 在 PipelineRun 中我们制定了 Pipepline …
背景 Tekton 的介绍请参考Tekton Pipeline 实战. 通常, CI/CD 事件应该包含如下信息: 确定事件的类型(比如 GitHub Push, GitLab Issue, Docker Hub Webhook 等) 可从 …
Tekton 提供了dashboard方便用户管理和查看 Tekton PipelineRun 和 TaskRun 以及创建, 执行和完成过程中涉及的资源. 它还允许按标签过滤 PipelineRun 和 TaskRun. …
翻译整理自 What’s New in Tekton 0.9 功能及Bug修复 脚本模式 以前如果要在容器里运行个简单的 bash 脚本, 需要这么写: - name: hello image: ubuntu command: …
安装 kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml 检查安装的tekton相关 …
准备 注意: istioctl的安装要使用安装里的, 不要是用homebrew里的. github issue curl -L https://istio.io/downloadIstio | sh - cd istio-1.4.2 cp …
本文翻译自The Mystery of Eureka Self-Preservation 根据CAP定理, Eureka是一个AP系统, 这就导致了在网络分区期间多个注册表中的信息不一致. 自我保护功能则是为了尽可能降低这种不一致. 自我保 …
今天来说说日常在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 …
原文 Spring Cloud Hoxton.RELEASE基于Spring Boot 2.2.1.RELEASE 文档变化 Hoxton.RELEASE使用了新的首页, 新的样式以及单页面, 多页面和PDF版本. …
为什么要降级? 既然已经搜到了这里, 相信个中原因也都清楚. 我的QC35一代, 之前升级到了3.0.3固件. 目前已成功降级到了1.0.6, 下面的操作步骤Mac OSX的, 作者也提供了Windows上的操作步骤. 操作步骤 确认已经卸 …
根据官方的文档Docker Desktop on Mac vs. Docker Toolbox, Docker Desktop on Mac只提供了UNIX socket/var/run/docker.sock, 并未提供tcp的监听(默 …
译自: https://spring.io/blog/2019/10/16/spring-boot-2-2-0 组件升级 Spring AMQP 2.2 Spring Batch 4.2 Spring Data Moore Spring …
上回说为了解决吞吐问题, 将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个月没有更新了. 不是说没有东西可写, 而且想写的东西很多. 工作太忙, 不忙的时候又太懒, 归根结底还是太懒. 过去一年多都是在做基础架构方面的工作, 围绕技术中台展开的. 有很多技术需 …
@Configuration注解 @Configuration注解指示一个类声明一个或多个@Bean方法, 并且可以由Spring容器处理, 以在运行时为这些bean生成bean定义和服务请求. 使 …
Elasticssearch的HTTP基本认证实现有两种方案: x-pack和nginx反向代理. 前者收费, 后者不太适合生产使用. 如果仅仅是开发测试, 第二种完全足够. 创建密码 htpasswd -bc ./passwd …
安装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: …
客户端负载均衡, Ribbon的核心概念是命名的客户端.
加入spring-cloud-starter-netflix-ribbon
依赖
@Configuration …
最近开始客串运维做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语言里的并发是指让某个函数可以独立于其他函数运行的能力. 当一个函数创建为goroutine时, Go会将其视为一个独立的工作单元. 这个工作单元会被调度到可用的逻辑处理器上执行.
Go的运行时调度器可以管理所有创建 …
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在分区上提供了消息的顺序保证. 生产的消息在写入到所有的同步分区上后被认为是已提交 (不需要刷到硬盘). 生产者可以选择在消息 …
准备做个Spring Cloud源码分析系列, 作为Spring Cloud的源码分析笔记. 这一篇是Eureka的客户端. 客户端 两种方式, 最终的实现基本一样. 显示指定服务发现的实现类型 使用@EnableEurekaClient注 …
背景 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,其中提供了如何从如何使用存储提供存储的详细信息。为此, …
Kubernetes 安装 macos 检查环境 sysctl -a | grep machdep.cpu.features | grep VMX 安装VirtualBox …
停止,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本来不没有 …