机云应用程序是为云计算环境开发的应用程序。

对于“ 什么是云原生应用程序 ”这个问题没有具体答案,但是必须满足不同的概念。

在我看来,最重要的功能之一就是能够快速缩放 。 这意味着我们的应用程序在每台服务器上都无法具有任何状态,因为如果一台服务器宕机或规模缩小,那么存储在该服务器中的状态将丢失。

https://www.youtube.com/watch?v=osz-MT3AxqA对此进行了很好的总结,并以购物车示例进行了说明。 在整体方法中,您将购物车的产品存储在服务器会话中,如果服务器出现故障,则购物车的所有产品也会丢失。 在云原生应用程序中 ,可以快速扩展和缩减服务器实例,重要的是不要在服务上具有这种有状态的行为,而应将它们设计为无状态。

有多种方法可以实现实现无状态体系结构的目标,但可以将它们概括为两类:

  • 使用分布式内存键/值数据存储,例如Infinispan。
  • 使用令牌,该令牌用作客户端和服务器之间的会话 ,例如使用JWT

在本文中,我将向您介绍后面的方法。

从https://jwt.io/introduction/网站:

JSON Web令牌(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。

由于此信息是经过数字签名的,因此可以被验证和信任。 可以通过使用HMAC的机密或使用RSA的公/私钥对对JWT进行签名。

JSON Web令牌包含三个由点分隔的Base64Url字符串,它们是:Header.Payload.Signature

因此,使用JWT在后端实现无状态架构的基本思想是下一个:

  1. 当用户添加第一个产品时,后端服务将生成一个添加了产品的新JWT令牌,并将其发送回前端。
  2. 当用户添加新产品时,它将发送要添加的产品以及后端发送的JWT令牌。
  3. 然后,后端验证令牌是否尚未修改(验证签名),然后从先前添加的JWT有效负载中获取产品,并将新的产品添加到列表中。 最后,它使用以前的产品和新产品创建一个新令牌,并将其发送回前端。
  4. 始终重复相同的过程。

如您所见,现在无需维护任何状态或在后端添加任何新的数据库服务,您只需要发送和转发JWT令牌以及内部产品。

我录制了一个简单购物车示例的视频,其中演示了该解决方案的无状态本质。 可以在以下位置看到:

另外,如果您想检查我用于录制的项目,可以查看https://github.com/lordofthejars/shop-jwt 。

注意,这只是一个简单的文章,因此您可以了解基本思想。 但是您需要考虑在生产中使用它的下一步操作:

  1. 使用HTTPS代替HTTP
  2. JWT只是对令牌进行签名,如果您除了HTTPS之外还需要其他保护,请使用JWE来加密JWT令牌的有效负载。
  3. 对令牌进行指纹识别,以避免任何中间人攻击,并将这些参数用作令牌的身份验证参数。
  4. JWT也可以用于传递身份验证和授权内容。

您可以在JavaZone上观看我的演讲,其中介绍了其中一些技巧:

使您的REST服务免受攻击– Vimeo上 JavaZone的 Alex Soto Bueno

JWT方法的优点在于,它极大地简化了服务的部署,您无需部署或配置任何其他分布式数据库即可在整个群集中共享内容,从而将与网络通信所需的问题最小化分布式数据库或任何节点的配置错误。

缺点是客户端需要知道接收和发送回令牌并进行处理。 在后端,您需要一直签名并验证每个令牌。

翻译自: https://www.javacodegeeks.com/2018/01/cloud-native-applications-jwt.html

使用JWT的Cloud Native应用程序相关推荐

  1. 程序员如何让自己 Be Cloud Native - 配置篇

    前言 这是<程序员如何让自己 Be Cloud Native>系列文章的第二篇,从第一篇的反馈来看,有些同学反馈十二要素太形式主义,不建议盲目跟从.作者认为任何理论和技术都需要有自己的观点 ...

  2. Oracle Cloud Native Framework推出云原生解决方案

    摘要:Oracle Cloud Native Framework云原生平台提供托管云服务和本地软件,同时在现Oracle云基础架构上跨应用程序配置和分析大量服务.developer relations ...

  3. Cloud Native概念

    计算机领域有句名言"计算机科学领域的任何问题, 都可以通过添加一个中间层来解决.云计算能否给应用开发这提供一个 更加接近实际开发需求,能够更加接近实际问题抽象的中间层?作为一个软件工程师,我 ...

  4. Dubbo Cloud Native 实践与思考

    Dubbo Cloud Native 实践与思考 分享简介 Cloud Native 应用架构随着云技术的发展受到业界特别重视和关注,尤其是 CNCF(Cloud Native Computing F ...

  5. Dubbo Cloud Native 之路的实践与思考

    Dubbo Cloud Native 实践与思考 Dubbo Cloud Native 实践与思考 分享简介 自我介绍 主要议程 Cloud Native 基础设施 服务发现(Service Disc ...

  6. Cloud Native未来值得关注的方向:Service Mesh简介

    导读:本文简单介绍了Service Mesh出现的基本理念,对其关键组件做了对比分析.同时也对istio这一Service Mesh关键组件做了架构分析. 王启军,目前就职于华为公司架构部,负责华为公 ...

  7. 《Cloud Native Infrastructure》CHAPTER 7 (1)

    Managing Cloud Native Applications 云原生应用程序旨在由基础设施维护.就像我们在前面的章节中所示,云原生基础设施旨在由应用程序维护. Cloud native app ...

  8. 华为云视频Cloud Native架构设计与工程实践

    正文字数:7544  阅读时长:11分钟 随着云基础设施服务以及边缘计算技术的发展,Cloud Native,即云原生,架构理念和研发也越来越普及.从传统软件架构,到云原生软件架构的转变,还需要经历一 ...

  9. 微软推出了Cloud Native Application Bundles和开源ONNX Runtime

    微软的Microsoft Connect(); 2018年的开发者大会 对Azure和IoT Edge服务进行了大量更新; Windows Presentation Foundation,Window ...

最新文章

  1. 维度爆炸?Python实现数据压缩如此简单
  2. 正面刚CNN,Transformer居然连犯错都像人类
  3. python命令解析_python解析命令行
  4. [ay原创作品]用wpf写了个模仿36Kr网站登录背景的效果
  5. 洛谷P1265 公路修建题解
  6. 微软BI 之SSIS 系列 - MVP 们也不解的 Scrip Task 脚本任务中的一个 Bug
  7. VScode中Python的交互式命令环境使用笔记
  8. war包部署-排除内嵌的tomcat
  9. 只需要2个工具,百度云盘大文件就能用迅雷和IDM下载
  10. 哪些是常见的大数据分析模型
  11. PCL中的ICP算法(Registration模块之IterativeClosestPoint点云配准)
  12. MySQL读写分离、MySQL锁机制
  13. html5判断屏幕锁屏,js实现自动锁屏功能
  14. windows系统误删引导分区后如何重装系统
  15. 【Learning Notes】Sequence Transducer
  16. 如何禁用Citrix Receiver硬件加速功能
  17. vue表单验证rules国际化处理不能及时更新
  18. 对策论基础---矩阵对策的解法
  19. ffmpeg函数分析:av_read_frame()
  20. 【Cadence17.2】Padstack Editor制作焊盘和过孔

热门文章

  1. 一次频繁Full GC的排查过程,根源居然是它...
  2. JFreeChart(一)之架构
  3. 如何使ArrayList 线程安全
  4. 对于自绝对父相的理解
  5. vue前期知识点笔记
  6. 图的广度优先算法+遍历
  7. 19年8月 字母哥 第二章 RESTFul接口实现与测试 看到这里了
  8. String path = request.getContextPath()和String basePath = request.getScheme()
  9. 最新开发android版本,Android版本检测升级
  10. python长整数相乘_python写的大整数相乘的方法