- 博客(129)
- 资源 (6)
- 收藏
- 关注
原创 ChaosMeta for AI:混沌工程让AI稳定性更上一层楼
混沌工程的核心思想是“通过在真实环境中引入故障,评估和提升系统的稳定性”。在实际应用中,这意味着通过故意制造各种错误和故障,观察系统的表现,从而找出和修复系统的脆弱点。随着AI系统逐渐成为现代技术的支柱,混沌工程的应用范围也在不断扩展。输出内容:模拟历史已发生的故障,如输出乱码,通过注入代码篡改故障,检验系统的容错能力,确保终端用户看到的是稳定可用的内容。任意代码篡改:模拟意外代码修改对输出的影响。输入内容:通过对抗性样本测试,确保模型的合规合法,符合伦理道德标准。
2024-07-18 16:25:07
1099
1
原创 ChaosMeta V0.7.0 版本发布 & 进入CNCF混沌工程全景图
ChaosMeta支持多集群管理,ChaosMeta不仅支持阿里云ACK,也同时支持其他云厂商或者自建的K8S集群,提供强大的可扩展性。
2024-05-27 19:20:31
978
原创 云原生与ChaosMeta
云原生旨在提供更高效、可扩展和可靠的应用程序交付和管理方式。云原生下的软件开发、构建和运行依托于云计算,通过容器化技术将应用程序拆分为一系列微服务,实现了应用现代化。这种架构提高了应用程序的可维护性、灵活性和可扩展性。混沌工程的商业化在许多领域都有潜力。例如,在金融领域混沌工程可以帮助银行和交易所等机构提高系统的可用性和稳定性,防止金融市场出现系统性风险。在电子商务领域,混沌工程可以帮助在线商店和支付平台等企业提供更可靠的服务,减少系统故障对业务的影响。
2024-04-17 15:17:03
910
1
原创 knative
一.简略介绍二.文字介绍1.Serverless1.1 Serverless介绍:字面理解即无服务架构,指由第三方云计算供应商以服务的方式为开发者提供所需功能,例如数据库、消息,以及身份验证等。它的核心思想是让开发者专注构建和运行应用,而无需管理服务器。1.2 Serverless优点:Serverless 最大的优点就是自动扩展伸缩、无需自己管理。 在以往部署一个应用时,需要经历购买服务器、安装操作系统、购买域名等等一系列步骤,应用才能真正的上线。后来.
2022-02-23 18:03:18
893
原创 k8s-kubectl配置及使用
一.kubectl 安装kubectl是用于针对Kubernetes集群运行命令的命令行接口。你可以通过kubectl部署集群应用,检查和管理集群资源,查看日志等。1.安装brew install kubernetes-cli2.增加可执行权限chmod+x./kubectlsudo mv./kubectl/usr/local/bin/kubectl3.验证kubectl version二.kubectl配置1.配置文件2.配置生效...
2021-09-01 10:18:50
2521
原创 k8s-helm配置及使用
一.helm介绍应用程序封装 版本管理依赖检查 便于应用程序分发二.helm安装1.安装Homebrewruby -e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"2.安装helmbrew install kubernetes-helm3. 查看版本helm version三.helm命令helm create:在本地创建新的 chart
2021-09-01 10:14:35
582
原创 k8s-基本概念
一.术语1.node(结点)Node 是机器。它们是 Kubernetes 用于部署 Pod 的“裸机”(或虚拟机)。Node 为 Kubernetes 提供可用的集群资源用于以保持数据、运行作业、维护工作负载、创建网络路由等。2.podPod 是 Kubernetes 中最小的可互动单元。一个 Pod 可以由多个容器组成,这些容器共同部署在单个节点上形成一个单元。一个 Pod 具有一个 IP,该 IP 在其容器之间共享。在微服务世界中,一个 Pod 可以是执行后台工作或服务请求的微服务的单
2021-09-01 10:12:34
821
原创 故障演练平台
1.为什么需要故障演练平台,能带来什么价值? 一个好的系统并不是说不会出现故障,而是在故障发生之后能够重试、限流或者熔断等操作,这对系统的弹性及健壮性有很大的要求。如果能够将策略再次前置,通过主动制造故障,测试系统在各种极端场景下的反应,就可以提前识别或修复故障。 2.什么是故障演练? 目标是沉淀通用的故障模式,以可控成本在线上重放,以持续性的演练和回归方式运营来暴露问题,不断推动系统、工具、流程、人员能力的不断前进。 3.故障演练平台与可观测平台3.1平台间联系 我理解的混.
2021-09-01 10:07:22
751
原创 可观测平台-日志系统
二.思考与学习(可观测平台->日志系统)2.1日志的基本要素日志处理是一个很大范畴,其中包括实时计算、数据仓库、离线计算等众多点。在实时计算场景中,如何能做到日志处理保序、不丢失、不重复,并且在上下游业务系统不可靠(存在故障)、业务流量剧烈波动情况下,如何保持这三点。 保序(Ordering):通过一致性Hash来处理,使得不同的机器或者不同的服务能够映射到固定的处理队列中。这样一直是同一个处理队列来处理同一个机器或者同一个服务发来的日志。 不丢失(At-Least...
2021-07-30 10:34:15
447
原创 全链路监控
全链路监控方案调研/实现过程一.全链路监控的背景随着微服务的普及,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。 2. 内存选型,首先排除内存,内存的存储量小且珍贵;NoSQL数据库储在内存中的直接不考虑,Pik...
2021-03-17 11:22:01
2887
原创 Golang-排序
1.冒泡排序步骤1: 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 步骤2: 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数; 步骤3: 针对所有的元素重复以上的步骤,除了最后一个; 步骤4: 重复步骤1~3,直到排序完成。func BubbleSort(array *[]int) { if array == nil {...
2020-02-20 13:53:05
329
原创 Golang-算法
1.在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:数组排序后找到重复数字,排序数组时间复杂度O(nlogmn)。 遍历数组建立哈希表,key存数组中的值,value存数组中值出现的次数。 遍历数组,当遍历到下标为i的数字(m)时,比较下...
2020-02-04 16:34:29
1003
原创 Rpcx实现
一.代码介绍1.1 server结构// Server is rpcx server that use TCP or UDP.type Server struct { ln net.Listener //监听 readTimeout time.Duration //读取client数据的超时时间 writeTimeout ...
2020-01-10 18:12:14
2568
原创 Golang-队列
一.使用链表实现队列package Algorithmimport ( "container/list" "errors" "fmt" "sync")type Queue struct { list *list.List mutex sync.Mutex}func GetQueue() *Queue { return &Queue{ list:list...
2020-01-08 18:47:01
2951
原创 Golang-链表
一.链表的实现1.1 代码package Algorithmimport ( _ "container/list" "errors" "fmt")type Node struct { data interface{} pre *Node next *Node}type List struct { head *Node tail *Node len...
2020-01-07 18:36:48
685
原创 Golang设计模式-适配器模式
一.介绍意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。何时使用: 1、系统需要使用现有的类,而此类的接口不符合系统的需要。 2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一...
2020-01-07 11:44:00
827
原创 Golang逃逸与GC
一.Golang内存管理我们先来对比下C与Golang的内存分配: Golang内存分配特点:预先从操作系统申请一大块内存。 内存分配算法采用Google的 TCMalloc算法,预先将申请的内存分成不同大小的内存集合,给不同场景的内存使用。 回收内存会放入内存池,并不会直接分配给操作系统。介绍TCMalloc的几个重要概念Page:操作系统对内存管理以页...
2020-01-06 19:25:10
699
原创 Golang设计模式-代理模式
一.介绍意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。何时使用:想在访问一个类时做一些控制。如何解决...
2020-01-06 16:35:31
764
原创 Pika的设计与实现
一.介绍pika 的单线程的性能肯定不如redis, pika是多线程的结构, 因此在线程数比较多的情况下, 某些数据结构的性能可以优于redis pika 肯定不是完全优于redis 的方案, 只是在某些场景下面更适合. 所以目前公司内部redis, pika 是共同存在的方案, DBA会根据业务的场景挑选合适的方案1.1 redis大容量问题:恢复时间长:我们线上的redis 一般...
2020-01-03 17:50:31
2813
原创 Golang设计模式-观察者模式
一.观察者模式介绍意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。如何解决:使用面向对象技术,可以将这种依赖关系弱化。观察者...
2020-01-02 19:16:07
506
转载 为什么 Redis 快照使用子进程
虽然我们经常将 Redis 看做一个纯内存的键值存储系统,但是我们也会用到它的持久化功能,RDB 和 AOF 就是 Redis 为我们提供的两种持久化工具,其中 RDB 就是 Redis 的数据快照,我们在这篇文章想要分析 Redis 为什么在对数据进行快照持久化时会需要使用子进程,而不是将内存中的数据结构直接导出到磁盘上进行存储。概述 在具体分析今天的问题之前,我们...
2019-12-24 11:43:56
582
原创 LRU及其在InnoDB、Redis中的使用
一.页面置换算法 地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。1.1 最佳置换法(OPT)- 理想置换法 从主存中移出永远不再需要的页面;如无这样的页面存在,则选择最...
2019-12-17 10:36:35
367
原创 Golang设计模式-单例模式
一.介绍意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地创建与销毁。何时使用:当您想控制实例数目,节省系统资源的时候。如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。关键代码:构造函数是私有的。二.代码2.1 懒汉模式type singleton struct{}var ins *singleton...
2019-12-16 14:55:05
358
原创 Golang设计模式-工厂模式
一.介绍定义一个用于创建对象的接口,让子类界定实例化哪个类。工厂方法使一个类的实例化延迟到子类。二.工厂模式和简单工厂模式的区别 简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户的选择动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。如果是翻译,让客户端不管用哪个类的实例,只需把翻译类型(int 1,2,3)给工厂,工厂自动给出了相应的实例,客户...
2019-12-12 18:05:57
2185
原创 Golang设计模式-简单工厂模式
一.背景 假设我们在做一款小型翻译软件,软件可以将德语、英语、日语都翻译成目标中文,并显示在前端。二.使用接口 我们会有三个具体的语言翻译结构体,或许以后还有更多,但现在分别是German Translater、English Translater、Japanese Translater,他们都共同实现了一个接口Translator。//翻译接口ty...
2019-12-12 16:54:02
296
转载 微服务-部署策略
一.动机 部署单体应用意味着运行一个或多个来自单个较大应用的相同副本。你通常会配置 N 个服务器(物理或虚拟),每台服务器上会运行 M 个应用实例。单体应用的部署并不总是那么简单,但它比部署微服务应用要简单得多。 微服务应用由数十甚至上百个服务组成。服务使用不同的语言和框架编写。每个服务都是一个迷你应用,有自己特定的部署、资源、扩展和监视要求。例如,你需要根据服务的需求...
2019-12-12 16:09:20
2185
转载 系统高可用方案
一.系统设计相关1.扩展 扩展是最常见的提升系统可靠性的方法,系统的扩展可以避免单点故障,即一个节点出现了问题造成整个系统无法正常工作。换一个角度讲,一个容易扩展的系统,能够通过扩展来成倍的提升系统能力,轻松应对系统访问量的提升。一般地,扩展可以分为垂直扩展和水平扩展:1.垂直扩展:是在同一逻辑单元里添加资源从而满足系统处理能力上升的需求。比如,当机器内存不够时,我们可以帮...
2019-12-11 16:42:03
1093
翻译 微服务-降级、熔断
一.降级 当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。1.1 使用场景 服务降级主要用于什么场景呢?当整个微服务架构整体的负载超出了预设的上限阈值或即将到来的流量预计将会超过预设的阈值时,为了保证重要或基本的服务能正常运行,我们可以将一些不重要或不紧急的...
2019-12-10 16:01:48
1139
原创 微服务-限流
一.介绍 互联网应用发展到今天,从单体应用架构到SOA以及今天的微服务,随着微服务化的不断升级进化,服务和服务之间的稳定性变得越来越重要,分布式系统之所以复杂,主要原因是分布式系统需要考虑到网络的延时和不可靠,微服务很重要的一个特质就是需要保证服务幂等,保证幂等性很重要的前提需要分布式锁控制并发,同时缓存、降级和限流是保护微服务系统运行稳定性的三大利器。 限流的目的...
2019-12-09 20:00:31
717
转载 分布式锁的几种实现方式
一 介绍 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数...
2019-12-09 15:40:50
173
原创 MySQL三大范式和五大约束
一 数据库设计三大范式1.1第一范式(1NF) 原子性、 数据不可再分。原地址表 ID StuAddress 1 天津 10080 2 上海 10082 3 杭州 10083 4 深圳 10084 ... ... 调整之后的表 ID StuAddresss StuCall ...
2019-12-05 19:52:02
888
原创 Epoll原理剖析
从事服务端开发,少不了要接触网络编程。epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。 epoll 很重要,但是 epoll 与 select 的区别是什么呢?epoll 高效的原因是什么? 网上虽然也有不少讲解 epoll 的文章,但要么是过于浅显,或者陷入源码解析,很少能有通俗易懂的。笔...
2019-12-05 17:16:17
313
翻译 HTTP、HTTP2.0 详解
一 HTTP详解介绍1.1 HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。1.2 HTTP工作原理HTTP协议工作于客户...
2019-12-05 15:28:00
6575
原创 Golang中Mutex的实现
一.Golang中的锁 Golang的提供的同步机制有sync模块下的Mutex、WaitGroup以及语言自身提供的chan等。 这些同步的方法都是以runtime中实现的底层同步机制(cas、atomic、spinlock、sem)为基础的。1 cas(Compare And Swap)和原子运算是其他同步机制的基础原子操作:指那些不能够被打断的操作被称为原子操作,当有...
2019-11-13 19:17:04
2389
原创 Kafka实现原理
一.kafka定义 Kafka是一款分布式消息发布和订阅系统,它的特点是高性能、高吞吐量。最早设计的目的是作为LinkedIn的活动流和运营数据的处理管道。这些数据主要是用来对用户做用户画像分析以及服务器性能数据的一些监控。所以kafka一开始设计的目标就是作为一个分布式、高吞吐量的消息系统,所以适合运用在大数据传输场景。kafka的简单定义:分布式的基于发布订阅的消息系统,它的特...
2019-11-13 11:51:29
3447
3
原创 MySQL索引实现
一.索引的类型1.1 B-Tree索引 B-Tree实际上是一个术语,NDB使用了T-Tree存储索引,InnoDB使用B+Tree。B-Tree通常意味着所有的值是按顺序存储的,B-Tree索引能加快数据的访问速度,是因为存储引擎不再需要全表扫描来获取数据,而是从根节点向叶子结点搜索,通过匹配当前结点的值和要查找的值来确定是否继续向下查找。1.2 哈希索引...
2019-11-07 18:31:26
254
1
原创 网卡与中断
一.中断1.1 中断概念 指CPU在运行期间,由于外部或由预先安排的事件引起的CPU暂时停止正在运行中的程序,然后进入内部或外部的预先安排的事件服务的程序中去,服务完毕后再返回继续运行被暂时中断的程序。1.2 中断上下部 在一个特定中断的时候,内核会执行一个函数,该函数叫中断服务例程。要是既想中断服务例程运行的快,又想中断例程完成的任务多,我们把中断处理成...
2019-10-29 17:59:46
3901
原创 Golang-slice实现
一.slice实现1.1 slice结构体type slice struct { array unsafe.Pointer len int cap int}array:指向所引用的数组指针(unsafe.Pointer可以表示任何可寻址的值的指针) len:长度,当前引用切片的元素个数 cap:容量,当前引用切片的容量(底层数组的元素总数)在实际使用中,cap...
2019-10-23 19:52:43
217
Linux下的软路由
2017-11-01
MFC截屏工具
2017-11-01
图片预览器
2017-11-01
DLNA音视频推送
2017-11-01
校招面试中常见问题-软件开发
2017-10-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人