跳转到主要内容

标签(标签)

资源精选(342) Go开发(108) Go语言(103) Go(99) angular(82) LLM(75) 大语言模型(63) 人工智能(53) 前端开发(50) LangChain(43) golang(43) 机器学习(39) Go工程师(38) Go程序员(38) Go开发者(36) React(33) Go基础(29) Python(24) Vue(22) Web开发(20) Web技术(19) 精选资源(19) 深度学习(19) Java(18) ChatGTP(17) Cookie(16) android(16) 前端框架(13) JavaScript(13) Next.js(12) 安卓(11) typescript(10) 资料精选(10) NLP(10) 第三方Cookie(9) Redwoodjs(9) LLMOps(9) Go语言中级开发(9) 自然语言处理(9) 聊天机器人(9) PostgreSQL(9) 区块链(9) mlops(9) 安全(9) 全栈开发(8) ChatGPT(8) OpenAI(8) Linux(8) AI(8) GraphQL(8) iOS(8) 软件架构(7) Go语言高级开发(7) AWS(7) C++(7) 数据科学(7) whisper(6) Prisma(6) 隐私保护(6) RAG(6) JSON(6) DevOps(6) 数据可视化(6) wasm(6) 计算机视觉(6) 算法(6) Rust(6) 微服务(6) 隐私沙盒(5) FedCM(5) 语音识别(5) Angular开发(5) 快速应用开发(5) 提示工程(5) Agent(5) LLaMA(5) 低代码开发(5) Go测试(5) gorm(5) REST API(5) 推荐系统(5) WebAssembly(5) GameDev(5) CMS(5) CSS(5) machine-learning(5) 机器人(5) 游戏开发(5) Blockchain(5) Web安全(5) Kotlin(5) 低代码平台(5) 机器学习资源(5) Go资源(5) Nodejs(5) PHP(5) Swift(5) 智能体(4) devin(4) Blitz(4) javascript框架(4) Redwood(4) GDPR(4) 生成式人工智能(4) Angular16(4) Alpaca(4) SAML(4) JWT(4) JSON处理(4) Go并发(4) kafka(4) 移动开发(4) 移动应用(4) security(4) 隐私(4) spring-boot(4) 物联网(4) nextjs(4) 网络安全(4) API(4) Ruby(4) 信息安全(4) flutter(4) 专家智能体(3) Chrome(3) CHIPS(3) 3PC(3) SSE(3) 人工智能软件工程师(3) LLM Agent(3) Remix(3) Ubuntu(3) GPT4All(3) 软件开发(3) 问答系统(3) 开发工具(3) 最佳实践(3) RxJS(3) SSR(3) Node.js(3) Dolly(3) 移动应用开发(3) 编程语言(3) 低代码(3) IAM(3) Web框架(3) CORS(3) 基准测试(3) Go语言数据库开发(3) Oauth2(3) 并发(3) 主题(3) Theme(3) earth(3) nginx(3) 软件工程(3) azure(3) keycloak(3) 生产力工具(3) gpt3(3) 工作流(3) C(3) jupyter(3) 认证(3) prometheus(3) GAN(3) Spring(3) 逆向工程(3) 应用安全(3) Docker(3) Django(3) R(3) .NET(3) 大数据(3) Hacking(3) 渗透测试(3) C++资源(3) Mac(3) 微信小程序(3) Python资源(3) JHipster(3) 大型语言模型(2) 语言模型(2) 可穿戴设备(2) JDK(2) SQL(2) Apache(2) Hashicorp Vault(2) Spring Cloud Vault(2) Go语言Web开发(2) Go测试工程师(2) WebSocket(2) 容器化(2) AES(2) 加密(2) 输入验证(2) ORM(2) Fiber(2) Postgres(2) Gorilla Mux(2) Go数据库开发(2) 模块(2) 泛型(2) 指针(2) HTTP(2) PostgreSQL开发(2) Vault(2) K8s(2) Spring boot(2) R语言(2) 深度学习资源(2) 半监督学习(2) semi-supervised-learning(2) architecture(2) 普罗米修斯(2) 嵌入模型(2) productivity(2) 编码(2) Qt(2) 前端(2) Rust语言(2) NeRF(2) 神经辐射场(2) 元宇宙(2) CPP(2) 数据分析(2) spark(2) 流处理(2) Ionic(2) 人体姿势估计(2) human-pose-estimation(2) 视频处理(2) deep-learning(2) kotlin语言(2) kotlin开发(2) burp(2) Chatbot(2) npm(2) quantum(2) OCR(2) 游戏(2) game(2) 内容管理系统(2) MySQL(2) python-books(2) pentest(2) opengl(2) IDE(2) 漏洞赏金(2) Web(2) 知识图谱(2) PyTorch(2) 数据库(2) reverse-engineering(2) 数据工程(2) swift开发(2) rest(2) robotics(2) ios-animation(2) 知识蒸馏(2) 安卓开发(2) nestjs(2) solidity(2) 爬虫(2) 面试(2) 容器(2) C++精选(2) 人工智能资源(2) Machine Learning(2) 备忘单(2) 编程书籍(2) angular资源(2) 速查表(2) cheatsheets(2) SecOps(2) mlops资源(2) R资源(2) DDD(2) 架构设计模式(2) 量化(2) Hacking资源(2) 强化学习(2) flask(2) 设计(2) 性能(2) Sysadmin(2) 系统管理员(2) Java资源(2) 机器学习精选(2) android资源(2) android-UI(2) Mac资源(2) iOS资源(2) Vue资源(2) flutter资源(2) JavaScript精选(2) JavaScript资源(2) Rust开发(2) deeplearning(2) RAD(2)

链接

  • 第1部分:介绍和体系结构<--本文
  • 第2部分:建立Kubernetes和Kafka
  • 第3部分:设置Vault
  • 第4部分:建立微型服务
  • 第5部分:部署和测试


介绍

微服务是一种设计模式,其中大型单片应用程序被分离为更小、更易于管理的组件。这些组件可以协同工作以解决特定的业务问题。

为此,组件需要相互通信。组件之间的通信可以通过多种方式实现:RESTful web服务、SOAP web服务、RPC、消息传递等。消息传递(发布/订阅)的一个流行实现是Kafka。

与大多数消息传递系统相比,Kafka具有更好的吞吐量、内置分区、复制和容错能力,这使其成为大规模消息处理应用程序的一个很好的解决方案。

发布订阅

Kafka遵循发布-订阅模式。这种模式就像一个公告板。例如,如果爱丽丝在公告板上张贴公告。鲍勃和查尔斯都能读。他们可以同时阅读,或者一个接一个地阅读。鲍勃今天可以读黑板,查尔斯明天可以读。爱丽丝的公告将一直保留在公告板上,直到过期为止。

在消息传递系统中,我们将有发布者(Alice)和订阅者(Bob和Charles)。公告板称为主题,公告称为事件或消息。

No alt text provided for this image

如您所见,Topic需要在指定的时间段内保留数据。因此,需要保护Topic中的数据。不幸的是,Kafka(在撰写本文时)没有处理端到端的数据加密。

No alt text provided for this image

这就是Vault的用武之地。

Vault

Vault为我们提供加密服务。这使我们能够为消息提供端到端加密方案。

但为什么选择Vault?我们真的需要它吗?当然,现在,我们只需要一个私钥/公钥基础设施来加密从发布者到订阅者的消息。只需创建这些密钥并将其嵌入发布服务器和订阅服务器服务中,这非常简单,如下所示:

No alt text provided for this image

问题是当我们有多个订户时,每个订户都有自己的私钥/公钥集。当我们需要管理密钥的生命周期时,问题就会出现。例如,当到期时,两个密钥都需要更换。如果嵌入了密钥,则可能需要重新部署。

另一个问题是密钥需要临时撤销和替换。使用嵌入式密钥没有简单的方法。

在微服务环境中,不同的服务具有不同的密钥集,例如下面的服务网格,问题变得更加严重:

No alt text provided for this image

试图在仅仅4个服务网格内管理或撤销密钥几乎是不可能的。

Vault允许我们集中管理所有这些密钥:

No alt text provided for this image

此外,Vault允许我们动态分配哪个服务可以访问哪个密钥。如果某个特定的服务遭到破坏,一旦系统再次受到保护,密钥就很容易被撤销和恢复。

架构

我们的应用程序架构如下所示。它支持使用Vault和Kafka进行安全的端到端通信(消息传递):

No alt text provided for this image

应用流程:

  • 交易服务将启动资金从一个存款账户转移到另一个账户。
  • 事务消息由事务微服务创建,并由Vault加密。
  • 加密的事务消息被传递到请求主题
  • 订户将消费消息并执行交易-将资金从一个帐户转移到另一个帐户。
  • 然后,订户将通过Response Topic将结果余额回复给Transaction服务
文章链接