如何避免微服务设计中的耦合问题

如何避免微服务设计中的耦合问题 译自:How to Avoid Coupling in Microservices Design Distributed monolith (分布一体式)是一个幽默的词,用来暗指那些设计欠佳的架构。如果忽略了微服务设计实践,不仅会无法克服一体式带来的缺点,也会导致出现 ... »

边缘认证和与令牌无关的身份传播

边缘认证和与令牌无关的身份传播 翻译自Edge Authentication and Token-Agnostic Identity Propagation。通过本文可以了解到Netflix是如何通过将认证转移到边缘设备来降低系统内容内部的认证流程,以及如何使用统一的认证结构支持系统对身份信息的需求 ... »

jenkins:实现Jenkinsfile与Json的转换

实现Jenkinsfile与Json的转换 最近在做个需求,需要支持Jenkinsfile和json的转换。 方法1:使用现有的jenkins插件 参考的是这篇文章。下面介绍一下将插件打包成镜像的步骤: 本地安装jdk和maven,jdk建议采用的版本为8(该工程会依赖一个名为tools.jar的包 ... »

BPF CO-RE 示例代码解析

BPF CO-RE 示例代码解析 在BPF的可移植性和CO-RE一文的末尾提到了一个名为runqslower的工具,该工具用于展示在CPU run队列中停留的时间大于某一值的任务。现在以该工具来展示如何使用BPF CO-RE。 环境 本地测试的话,建议采用Ubuntu,其内核本身已经开启了BTF选项 ... »

gRPC Load Balancing

gRPC Load Balancing 翻译自:https://grpc.io/blog/grpc-load-balancing/ 这是gRPC负载均衡的第一篇,后续会给出基于golang XDS服务发现的例子,了解golang XDS的工作原理。 本文描述了在部署gRPC时可能会采用的几种负载均衡 ... »

Linux Clone函数

Linux Clone函数 之前某一次有过一次面试,问了内核中是怎么创建命名空间的? 下面就来扒一扒clone的精髓,以及如何通过它创建命名空间。 注:本文的代码仅用于功能验证,不能用于生产。本文对clone的标志的描述顺序有变,主要考虑到连贯性。 使用clone创建进程和线程 从linux 2.3 ... »

BCC和libbpf的转换

BCC和libbpf的转换 本文讲述如何将基于BCC的BPF应用转换为libbpf + BPF CO-RE。BPF CO-RE可以参见上一篇博文。 为什么是libbpf和BPF CO-RE? 历史上,当需要开发一个BPF应用时可以选择BCC 框架,在实现各种用于Tracepoints的BPF程序时需 ... »

BPF的可移植性和CO-RE (Compile Once – Run Everywhere)

BPF的可移植性和CO-RE (Compile Once – Run Everywhere) 在上一篇文章中介绍了提高socket性能的几个socket选项,其中给出了几个源于内核源码树中的例子,如果选择使用内核树中的Makefile进行编译的话,可能会出现与本地头文件冲突的情况,如重复定义变量,结 ... »

分析核亲和性对高吞吐量的流的影响

分析核亲和性对高吞吐量的流的影响 本文翻译自Analysis of the Effect of Core Affinity on High-Throughput Flows 简介 网络吞吐量正在朝更高的数据传输率发展,与此同时,终端系统的处理器也在朝着多核发展。为了在多核终端系统上优化高速数据传输, ... »

流量控制--3.Linux流量控制的组件

Linux流量控制的组件 流量控制元素与Linux组件之间的相关性: traditional element Linux component 入队列 修订:从用户或网络接收报文 整流 class 提供了整流的能力 调度 一个 qdisc 就是一个调度器。调度器可以是一个简单的FIFO,也可以变得很复 ... »

流量控制概览

Overview of Concepts 本章将介绍流量控制,研究出现流量控制的原因及其优缺点,并介绍流量控制的关键概念。 了解Linux的流量控制的目的:一是为了更好地理解底层对报文的处理逻辑,二是在流量控制中使用了很多很好的流量处理方法,可以学习一下这些方法和思想。 2.1. 什么是流量控制 流 ... »

OpenTelemetry架构介绍

OpenTelemetry: 经得起考验的工具 摘自:https://blog.newrelic.com/product-news/what-is-opentelemetry/ 什么是OpenTelemetry? OpenTelemetry合并了OpenTracing和OpenCensus项目,提供 ... »

Istio多集群(1)-多控制面

Istio多集群(1)-多控制面 参考自官方文档。 复制控制面 本节将使用多个主集群(带控制面的集群)来部署Istio多集群,每个集群都有自己的控制面,集群之间使用gateway进行通信。 由于不使用共享的控制面来管理网格,因此这种配置下,每个集群都有自己的控制面来管理后端应用。为了策略执行和安全目 ... »

使用kind搭建kubernetes

使用kind搭建kubernetes kind是一个非常方便的用于创建kubernetes测试集群的工具,可以使用kind创建的集群来对kubernetes进行测试。 kind架构 kind的架构如下,它将docker容器作为一个kubernetes的"node",并在该"node"中安装kuber ... »

评测Loki日志工具

评测Loki日志工具 本文仅对Loki进行简单评测,不涉及原理和细节。 部署Loki Loki是grafana团队开发一个日志采集工具。使用推荐使用helm方式安装loki,官方推荐的tanka需要使用aws的s3服务。安装helm后直接运行如下命令即可在loki命名空间中部署最简单的loki套件。 ... »

Istio安全-认证(istio 系列七)

Istio安全-认证 认证策略 本节会介绍如何启用,配置和使用istio的认证策略,了解更多关于认证的底层概念。 首先了解istio的认证策略和相关的mutual TLS认证概念,然后使用default配置安装istio 配置 下面例子会创建两个命名空间foo和bar,以及两个服务httpbin和s ... »

Istio的运维-诊断工具(istio 系列五)

Istio的运维-诊断工具 在参考官方文档的时候发现环境偶尔会出现问题,因此插入一章与调试有关的内容,便于简单问题的定位。涵盖官方文档的诊断工具章节 使用istioctl命令行工具 首先可以通过日志或Introspection检查各个组件,如果不足以支持问题定位,可以参考如下操作: istioctl ... »

Istio的流量管理(实操二)(istio 系列四)

Istio的流量管理(实操二)(istio 系列四) 涵盖官方文档 "Traffic Management" 章节中的inrgess部分。 [TOC] "Ingress网关" 在kubernetes环境中,kubernetes ingress资源用于指定暴露到集群外的服务。在istio服务网格中,使 ... »

Istio的流量管理(实操一)(istio 系列三)

Istio的流量管理(实操一)(istio 系列三) 使用官方的 "Bookinfo" 应用进行测试。涵盖官方文档 "Traffic Management" 章节中的请求路由,故障注入,流量迁移,TCP流量迁移,请求超时,熔断处理和流量镜像。不含ingress和Egree,后续再补充。 [TOC] ... »

Istio的流量管理(概念)(istio 系列二)

Istio的流量管理(概念) [TOC] 涵盖istio官方文章的 "Traffic Management" 章节 概述 istio的流量路由规则可以简单地控制不同服务间的流量以及API调用。Istio在服务层面提供了断路器,超时,重试等功能,通过这些功能可以简单地实现A/B测试,金丝雀发布,基于百 ... »