eBPF 介绍
什么事eBPF?
eBPF
是一项革命性技术,起源于 Linux
内核,可以在特权上下文(例如操作系统内核)中运行沙盒程序。它用于安全有效地扩展内核的功能,而无需更改内核源代码或加载内核模块。从历史上看,由于内核具有监督和控制整个系统的特权能力,操作系统一直是实现可观察性、安全性和网络功能的理想场所。同时,操作系统内核由于其核心地位,对稳定性和安全性要求较高,演化难度较大。因此,与操作系统外部实现的功能相比,操作系统级别的创新率传统上较低。
eBPF
从根本上改变了这个公式。它允许沙盒程序在操作系统内运行,这意味着应用程序开发人员可以运行 eBPF
程序以在运行时向操作系统添加附加功能。然后,操作系统可以保证安全性和执行效率,就像借助即时 (JIT
) 编译器和验证引擎进行本机编译一样。这引发了一波基于 eBPF
的项目,涵盖广泛的用例,包括下一代网络、可观察性和安全功能。
如今,eBPF
被广泛用于驱动各种场景:在现代数据中心和云原生环境中提供高性能网络和负载平衡,以低开销提取细粒度的安全和可观察性数据,帮助应用程序开发人员跟踪应用程序,提供性能故障排查、预防应用程序和容器运行时安全实施等方面的问题。
多运行时微服务架构
认证、授权、凭证
认证(Authentication)、授权(Authorization)、凭证(credentials)
认证是指以当前用户的身份登录过后,系统便能追踪到他的身份,并做出符合相应业务逻辑的操作。即使用户没有登录,大多数系统也会追踪他的身份,只是当做来宾或匿名用户来处理,认证技术解决的是**我是谁?**的问题。
授权是指什么样的身份被允许访问某些资源,在获取用户身份后继续检查用的权限。单一的系统授权往往是伴随认证来完成的,但是开放API的多系统结构之下,授权可以有不同的系统来完成。例如OAuth
。授权是解决我能做什么?的问题。
凭证,实现认证和授权的基础是需要一种媒介(credentials
)来标记访问者的身份或权利,在现实生活中每个人都需要一张身份证才能访问自己的银行账户、结婚和办理养老保险等,这就是认证的凭证。在互联网世界中,服务器为每一个访问者颁发 session ID
存放到cookie
,这就是一种凭证技术。数字凭证还表现在方方面面,SSH
登录的秘钥、JWT
令牌、一次性密码等。用户账户也不一定存放在数据库中的一张表,在一些企业的IT系统中,对账户管理的权限有了更多的要求。所以账户技术(accounting)可以帮助我们使用不同的方式管理用户账户,同时具有不同系统之间共享账户的能力。
开发、运维、投资模式
云平台的出现,深刻地影响了开发模式。无论是技术选型、系统架构、研发组织架构还是基础设施,都要为上云做好准备。
新开发模式
微服务(Micro Service)
对于上云的应用,微服务几乎是必然之选,因为云平台的基础功能之一就在于动态调配计算资源(CPU、内存等)。我们知道,在一个应用中的不同部分,所需要的计算资源是不一样的。比如“查看商品”功能的使用频度通常远高于“支付订单”。如果使用传统的方式,把所有功能都放在一个运行单元中(即单体应用),那么就只能将其整体扩容(复制多份,负载共担)才能实现,这将浪费大量的计算资源。而微服务技术可以把使用频度不同的功能拆分成不同的运行单元,每个运行单元称之为一个微服务。比如当“查看商品”功能的使用频度很高时,就可以只对它所在的运行单元进行扩容;当使用频度降低时,就可以释放不再需要的运行单元,把计算资源释放回资源池。但微服务也需要相应的技术储备。
Service Mesh 架构
微服务架构的特性
- 围绕业务构建团队
【Docker】构建基础镜像
【混沌工程】介绍
混沌工程(Chaos Engineering)
“If something hurts, do it more often.
“
原则
Build a Hypothesis around Steaday State Behavior
.Vary Real-World events
.Run experiment in Production
.Automate Experiments to Run Continuously
.Minimize Blast Radius
.
[http://principlesofchaos.org]
一些开源项目
[https://github.com/Netflix/chaosmonkey]
[https://github.com/easierway/service_decorators/blob/master/README.md]
[https://martinfowler.com/articles/lmax.html]