0%

eBPF是当前在云原生领域比较火,之前用wasm弄了个hello world,接下来是eBPF。这篇文章主要完成eBPF的Helloworld开发,eBPF的详细介绍这里不是重点,可以到官网看看

一、开发环境准备

看了一下相关资料,有些使用借助 Vagrant 、Multipass 等工具,来创建本地的虚拟机,作为运行环境,有使用docker镜像作为环境的。我这里使用VS Code的Remote Development来作为代码开发环境,毕竟作为一名coder,用IDE有感觉些。因为平常用的是Jetbrains全家桶,看了一下也支持SSH开发。不过VS Down下来的也不容易,试试吧。安装完成后,装一下Remote Development插件。

image-20220410171452471

linux的环境,前段时候ucloud做活动时,买了个2C8G云主机,3年,够玩了。

阅读全文 »

Rust 和 WebAssembly作为目前🔥热的技术,当它们相遇时,会有什么样的火花呢。从这里来玩个HelloWorld吧。

一、安装工具链

我这里用的是MacBook。

1.安装rust

1
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
阅读全文 »

一、服务网格发展历史

1.微服务进化史

1.1微服务发展历史

从服务架构的演绎过程来看,服务架构经历了从单体架构到SOA架构,并到微服务架构的演进。

单体架构:
阅读全文 »

一、GitOps的优势

GitOps专注于Git工作流、IaC、CI/CD管道,不可变服务器(immutable servers)、跟踪、以及可观测性等优秀实践模型,因此它代表了对于Kubernetes云原生应用管理的高级状态。

  • 简化持续部署
  • 缩短平均修复时间(Mean-time-to-repair,MTTR)MTTR是衡量DevOps团队绩效的一项关键指由于GitOps保留了版本控制系统中的所有修改,并且能够实现自动化的管理,因此,开发团队能够全面了解目标环境中的变化,轻松发现和修复错误,从而显著降低MTTR。
  • 简化Kubernetes管理

二、原则

img

阅读全文 »

AppActive是阿里云计算产品应用多活AHAS中开源出来的一部分功能,应用多活AHAS主要有三块,第一块流量防护主要是基于阿里本身的Sentinel开源项目,与Hystrix类似,用于微服务故障熔断和恢复。第二块故障演练是基于chaosblade开源项目,混沌工程,也就是故障注入。最后一块就是多活容灾,这个的能力正是来源于AppActive。目前AppActive开源出来的代码比较简单,也不完善,但可以看出来一些实现思路。

一、应用双活、多活的原理和实现方案

关于应用双活、多活,首先要了解一些分布式理论如CAP、BASE。可以看看基于库存的异地双活方案,这是我几年前实现的方案和思路。这篇文章也总结得很好,思路上是类似的。业务单元化,基于规则的路由/流量调度,业务降级、业务接管与恢复、基于Mysql的双写和主从同步控制缓存、消息、ES等数据同步以达到数据最终一致性等。都是应用双活实现的主要技术点。在云计算时代,结合K8S和容器技术,基础设施更容易管理,多活应该更好做了。

二、分析AppActive

首先从github先把代码clone下来。

阅读全文 »

这是我16年设计和开发的项目,并做了总结。当时容器、k8s还未流行,至今看来,异地双活、多活的一些关键技术理念还未过时,业务单元化、业务路由、接管与恢复、基于Mysql的双写和控制缓存、消息、ES等数据同步以达到数据最终一致性的思路仍是最有效的。

以下是原文,有删减:

1.编写目的

双活项目从启动、预研、设计开发测试到上线历时了大约5个月时间,这个历程是我们对业务的一次复盘,也是对分布式系统“异地多活”从思考到实践的过程。因此,对项目过程中的方案、规划和技术等进行总结,沉积这方面的技术和经验是有必要的,也为其它项目解决此类问题提供参考。

2.项目背景和目标

阅读全文 »

一、简介

BPF/eBPF

BPF - Berkeley Packet Filter ,是一种数据包过滤技术,采用虚拟机 (VM) 设计,可以有效地工作在基于寄存器结构的 CPU 之上,并通过缓存机制提高过滤性能,但BPF只能运行在内核态,没有大规模使用。
eBPF - extended BPF ,eBPF针对现代硬件进行了优化,增加了寄存器和优化指令。并且向用户空间开放了能力,可以在Linux内核中运行沙盒程序,而无需更改内核源代码或加载内核模块。实现机制上类似Java字节码与JVM,开发者可以编写程序,编译为字节码,映射到eBPF中执行。eBPF可以监控内核事件、调用等,从而在观测(跟踪、性能调优等)、安全和网络等领域发挥重要的作用。

wasm - WebAssembly

WebAssembly: 诞生于2015年,一种基于堆栈式虚拟机的二进制指令集,Wasm 被设计成为一种编程语言的可移植编译目标,并且可以通过将其部署在 Web 平台上,以便为客户端及服务端应用程序提供服务。
Wasm出现的最初原因是为了解决Javascript在浏览器执行性能问题,主要使用场景在浏览器中。后来为了在web场景之外使用wasm,出现了新的标准WASI(WebAssembly System Interface),支持WASI的runtime都可以运行wasm,从而使wasm runtime作为应用运行时出现在云计算基础设施领域成为可能。

阅读全文 »

本文主要在mac os环境中测试,windows未测试,原理应该相同。

一、安装go环境。

通过brew安装1.16.x版本即可。

1
2
3
~ go version

go version go1.16.8 darwin/amd64

二、安装minikube

阅读全文 »

image-20210905001417740

Kubevela是OAM规范的一个实现,以下基于MAC来快速安装和体验。本来没什么难度的操作,在GW的 Buffer加持下,各种连接不上,镜像下载问题,难度上升,花费时间不少。

一、安装minikube

遵循 minikube 安装指南 进行安装

二、安装helm

阅读全文 »

golang/k8s学习,记录windows下通过GoLand IDE配置k8s源码编译启动apiserver的过程

环境:
OS windows10
IDE: GoLand

一、安装Go/GoLand

没啥写的,略。

二、下载代码

阅读全文 »