Posts in 2022

  • EaseAgent 无侵入式观测系统

    Sunday, May 08, 2022 in Blogs

    背景 随着微服务的广泛应用,故障和问题定位变的非常困难,完善的可观测性已经变成了分布式系统的刚需,用于定位问题的分布式问题追踪系统更是可观测性的重中之重。随着需求量的变大,市场上出现了很多APM(Application Performance Management)产品来解决分布式系统的可观测性问题。如下仅是 MegaCloud 部分微服务,但已可见应用复杂性。 起初,这些APM产品相互竞争,大家各自为政,每个厂商都以自己专有的规范和标准在做产品。这导致了无论开源还是闭源,每一家都要做一个完整 …

    更多

  • 生产线上的全链路压力测试

    Tuesday, February 22, 2022 in Blogs

    1. 背景介绍 随着硬件性能越来越强,带宽越来越高,数据越来越多,传统的单机应用已经无法满足用户需求,取而代之的是由各种组件基于网络而构成的软件系统。 但这种软件系统,在带来更强大的计算能力的同时,也引入了单机时代所不具有的复杂性。今天,一个完整的软件系统,模块数量少则几十,多则成千上万。并且,为了提高开发上线速度,这些模块会由不同的团队使用不同的语言开发,这也让模块间的通讯变得更加复杂。 同时,今天的业务模式相比过去也发生了很大的变化,类似双十一的促销活动,会让系统承受数倍、数十倍于日常的压 …

    更多

  • 全链路多重灰度发布

    Thursday, February 17, 2022 in Blogs

    1. 什么是灰度发布 让我们从最简单的情况开始。灰度发布又叫金丝雀发布,是一种发布技术,用于减少软件新版本发布的风险。其想法是首先向少数用户发布新版本的软件,然后逐步扩大用户比例。例如,在这个图中,我们先测试10%的用户,然后逐渐将更多的用户转移到新版本,最后,当所有的用户都使用了新版本,那么旧版本就可以被清除并下线。 在整个测试过程中,我们可以给请求流量贴上各种业务标签,如:用户的设备:Android设备、用户的地理位置:Atlantis,等等。还要注意的是,用户标签不应该使用IP地址,因为这 …

    更多

Posts in 2021

  • 如何使用 WebAssembly 扩展后端应用

    Friday, September 17, 2021 in Blogs

    1. WebAssembly 简介 随着互联网的发展,越来越多的应用借助 Javascript 转到了 Web 端,但人们也发现,随着移动互联网的兴起,需要把大量的应用迁移到手机端,随着手端的应用逻辑越来越复杂,Javascript 的解析、编译消耗了大量时间,导致页面加载慢,应用性能低下的很多问题。 为了解决这些问题,Mozilla 的工程师 Alon Zakai 在 2012 年提出了 Asm.js。之后,经过几年的发展,最终在 2015 年演变成了 WebAssembly。 …

    更多

  • 用 Easegress + WebAssembly 做秒杀

    Wednesday, September 08, 2021 in Blogs

    0. 背景 “秒杀”是一种经常被各家电商采用的,在短时间内提供超高折扣的促销方式。参与秒杀的商品数量往往很少,但在巨大折扣的吸引力下,会在短暂的时间导致流量请求的激增,这往往会导致服务缓慢、拒绝服务,甚至宕机。 本文介绍了如何利用 WasmHost Filter 过滤器 来保护秒杀中的后端服务。WebAssembly 代码是通过使用 Easegress AssemblyScript SDK ,以 AssemblyScript 语言(类似于 TypeScript)编写的。 在开始前,需要介绍一下为 …

    更多

  • 与 Spring Cloud 完全兼容的服务网格可以干什么样的事

    Tuesday, August 24, 2021 in Blogs

    背景 目前市场上的服务网格技术多用于解决微服务体系架构下的微服务治理的问题,主要包括有如下的功能: 流量调度系统 服务注册和发现。服务注册,分类、标签和多版本管理。 流量路由。蓝绿部署,灰度部署或 A/B 测试(全路径的流量着色/标签) 东西向流量边车托管。流量劫持,如 Istio。非流量劫持,如:阿里开源的 MOSN。 服务实例负载均衡(轮询/加权轮询/一致性hash/随机 等) 弹力容错设计 熔断器。当一个系统处于有问题状态时,快速失败比让客户等待更好。 限流器。限制传入请求的速率。 重试 …

    更多

  • 下一代服务型流量网关

    Friday, August 13, 2021 in Blogs

    云原生应用 今天,所有的软件架构都在迁移到云原生架构。云原生架构具有以下特点: 它由具有弹性设计的微服务架构构建。 按需性能的扩展能力。 完全解耦控制逻辑和业务逻辑。 旨在实现高可用性和 >99.9% 的正常运行时间 SLA。 并且有四个关键性的东西要很好地通过云原生方式构建并被调度 基础设施运行时资源。底层的计算节点、存储、网络,目前,这些资源在都由容器和Kubernetes来管理和调度。 应用程序数据和状态。应用程序数据和状态需要持久化或在集群范围内同步。我们可以看到主流的数据 …

    更多