在网络通信中,端口是用于区分不同服务的重要资源。通常,每个服务会绑定到一个特定端口上,但有时我们需要通过同一个端口来代理不同的服务。这种技术被称为端口复用。本文将介绍端口复用的场景、用途、协议特性,并分别使用 Nginx 和 HAProxy 进行端口复用配置。

端口复用的场景与用途

端口复用在以下场景中非常有用:

  1. 资源限制:在IP地址和端口资源有限的环境中,通过同一端口提供多个服务可以最大化利用现有资源。
  2. 简化配置:简化客户端配置,使其无需关心不同服务使用不同端口的问题。
  3. 负载均衡与高可用性:在负载均衡器或反向代理服务器上,通过同一端口代理不同的后端服务,提高服务的可用性和可靠性。

协议特性

端口复用的实现依赖于协议特性。通过分析协议的特定字段或数据包的前几个字节,可以判断请求的类型并将其转发到相应的后端服务。

- 阅读剩余部分 -

可重现构建(reproducible builds)是一组软件开发实践,如果给定相同的源代码、构建环境和构建指令,任何一方都可以bit-by-bit重新构建出相同副本,则构建是可重现的。本文将探讨可重现构建的重要性,以及在maven项目中如何实现这一目标。

为什么需要可重现构建?

不知道你有没有发现,你的java工程在没有修改代码的情况下,两次构建出来的jar/war包md5值是不一样的。为什么会出现这种情况呢?jar包其实是一个zip压缩包,当你解包两次构建查看其中的差异时,你会发现最明显的区别就是文件夹的时间不一样了:

截屏2024-05-30 19.58.28.png

除了时间不一样以外,还有元数据等等,具体要解决的问题,在apache官网有个提案,记录了可重现构建需要解决的问题。

- 阅读剩余部分 -

KT-Connect 是一个用于 Kubernetes 环境下的网络代理工具,旨在简化开发和测试过程中对 Kubernetes 集群内服务的访问。它通过创建一个或多个代理,使得本地开发环境可以直接与 Kubernetes 集群内的服务进行通信,而无需复杂的端口映射或修改服务配置。这种方式有助于开发者在本地开发、调试容器化应用时,如同直接操作本地服务一样便捷。

KT-Connect 的主要功能和特点包括:

  1. 零配置代理:用户无需手动配置端口映射或修改服务定义,就能将集群内服务的流量透明地转发到本地开发环境。
  2. 双向通信:不仅支持从本地到集群的服务请求,也支持集群内服务调用本地服务,实现了真正的双向通信。
  3. 环境隔离:通过为每个开发者创建独立的命名空间或环境,保持开发环境的隔离性,避免开发间互相干扰。
  4. 服务模拟:允许开发者模拟集群内的服务,便于在没有依赖服务就绪的情况下进行开发和测试。
  5. 一键式操作:提供命令行工具,使得启动、停止代理、查看状态等操作变得简单快捷。
  6. 安全接入:通过 TLS 加密和其他安全机制确保通信的安全性,保护集群资源不被非法访问。

使用 KT-Connect 可以显著提升 Kubernetes 应用的开发效率,尤其是对于需要频繁调试、集成测试的场景,它提供了一个灵活且高效的本地开发解决方案。

KT-Connect实践

要想运行KT-Connect,需要确保两个镜像能在你的Kubernetes集群中正常拉取:

  • registry.cn-hangzhou.aliyuncs.com/rdc-incubator/kt-connect-router:v0.3.7
  • registry.cn-hangzhou.aliyuncs.com/rdc-incubator/kt-connect-shadow:v0.3.7

如果你的网络受限,不能拉取以上镜像,需要你提前将镜像导入到每个Kubernetes节点。

- 阅读剩余部分 -

SkyWalking简介

Apache SkyWalking是一款开源的观测性能平台,专为分布式系统设计,提供了全面的应用性能监控(APM)、服务网格观测、以及分布式追踪等功能。它帮助开发者和运维人员深入洞察应用的性能状况,快速定位问题根源,从而提升系统的稳定性和效率。SkyWalking的核心组件包括OAP服务器(Observability Analysis Platform)和UI界面,两者协同工作,为用户提供强大的可视化监控能力。

SkyWalking-UI简介

SkyWalking-UI是SkyWalking的可视化界面,它负责展示从OAP服务器收集来的监控数据,包括服务拓扑图、追踪详情、性能指标、告警信息等。通过SkyWalking-UI,用户可以直观地了解系统的健康状况,进行性能分析,以及配置监控规则。UI的设计旨在易于使用,同时支持高度定制化,以满足不同场景下的监控需求。

定制UI访问路径并重新编译

在某些场景下,用户可能需要将SkyWalking-UI的访问路径固定为特定的URL前缀,例如/skywalking-ui,以便更好地融入现有系统架构或便于管理。要实现这一需求,需要对SkyWalking-UI源码进行适当修改并编译。以下是一个简化的编译与配置步骤指南,适用于具有Java和Maven环境的用户。

准备工作

首先你得有JDK、Maven,版本要求参考官网

拉取代码

git clone --recurse-submodules https://github.com/apache/skywalking.git
cd skywalking/
git checkout v9.7.0 # 根据你的需求切换版本

- 阅读剩余部分 -

CentOS 7 生命周期在2024年6月30日结束,官方不再为 CentOS7 提供任何的技术支持和软件更新服务。

常见 RHEL 系列的操作系统有:

  • Red Hat Enterprise Linux(RHEL)
  • CentOS
  • CentOS Stream
  • Rocky Linux
  • AlmaLinux

几者的关系:

  • rpm 包通用。
  • 命令通用。
  • CentOS 是 CentOS 社区重新编译 Red Hat 源代码生成的免费版本。
  • CentOS Stream 是 CentOS 滚动升级的版本,由 CentOS 官方提供。
  • Rocky Linux 和 AlmaLinux 都是基于 RHEL 源代码和二进制文件的克隆版本。

AlmaLinux 官网有一张对比表:

Benchmarking against RHELAlmaLinuxOracle LinuxRocky LinuxCentOS StreamCentOS Linux
Production VersionSince March 2021Since 2006Since June 2021Since 2019Since 2004
RHEL compatibilityBinary CompatibleABI Compatible?Binary compatibleCompatible within the limits of the ACGBinary Compatible
Regular updates delayAbout 1 business dayAbout 1 business dayAbout 1 business dayUpstream of RHELAbout 1 business day
Last minor version release delay1 day7 days5 daysN/AN/A
ErrataYesYesYesNoNo
Lifecycle10 Years10 Years10 Years5-6 YearsEOL on 2021-12-31
Commercial support3rd partyOracle, 3rd parties3rd Party3rd party3rd party
Livepatching serviceKernelCareOracle Ksplice, KernelCare AvailableKernelCare AvailableNot availableKernelCare, Kpatch
FIPS complianceYesYesPlannedNot availableNot available
ARM supportYesYesYesYesYes
IBM PowerPC supportYesNoYes (versions ≥ 9)YesYes
IBM Z (s390x) supportYesNoYes (versions ≥ 9)NoNo
SecureBootYesYesYesYesYes
Owned By:AlmaLinux OS FoundationOracle IncRocky Enterprise Software FoundationRed Hat IncRed Hat Inc
Owned by org type:Non-Profit 501(c)6For Profit C-CorpFor Profit, Public Benefit CorpFor Profit C-CorpFor Profit C-Corp

- 阅读剩余部分 -