写点什么

Kevin Webber:Java 的云迁移

  • 2017-11-30
  • 本文字数:1125 字

    阅读完需:约 4 分钟

Kevin Webber 在开始演讲的时候说,企业软件构建应用程序的形式比较散碎,不够系统,集成很复杂。传统的基础架构(Traditional infrastructures)具备主动 / 被动的粗糙故障转移(crude failover),支持在主动和被动系统之间复制复杂的状态。

在一个现代化项目中,架构师必须做出的最初几项决定(“第一英里(The First mile)”)是至关重要的。他不仅谈到了关键的架构决策,也提及了如何根据领域驱动设计( Domain-Driven Design)的原则来做出这些决策。为了定义所涉及的业务过程以及如何将这些过程转换为事件驱动(event-driven)系统,事件风暴(Event storming)将关键的利益相关者聚集到一个协作的环境中。团队应该关注在业务中已经发生的最有趣的事件。

在从遗留系统(legacy sysems)到反应系统(Reactive systems)的迁移中,其他一些诸如防护层 (ACL) 和 Strangler 模式的概念也同样有用。

洋葱架构(Onion architecture)与领域驱动设计(Domain Driven Design)的概念非常吻合。该架构中的以下几个层可以帮助实现不同方面的需求。

  • 基础架构:我们可以使用该层来实现诸如健康检查、跟踪和身份验证等交叉需求(cross-cutting requirements)。
  • API:用于路由和数据验证
  • 域:管理这个层中的有界上下文
  • 核心:这就是我们管理聚合(Aggregates)的地方

Webber 讨论了云原生对于应用程序的意义。应用程序需要是容器包装的、动态管理的和面向微服务的。

Webber 还谈到了微服务架构,他推荐道:团队首先应该从整体模型开始着手, 并使用微服务作为重构技术将系统分解成多个微服务。微服务模型不仅有助于分布式系统, 也有助于分布式团队。

很多团队专注于在服务级别上分解系统,但却在数据层保持耦合。在这样的架构中,任何数据模型都将影响多个服务。

在会议结束后,InfoQ 与Kevin 进行了交谈,了解了有关将Java 应用程序迁移到云基础架构上的更多详细信息。

Kevin 说到,一旦微服务有点对点的交互,那么在服务管理方面就会混乱。重要的是要记住, 如果一个微服务发生改变的时候影响了另一个,那么这种情况下它们就不算真正独立的微服务,两者应该整合为单一的服务。

微服务的构成可以利用 PubSub 模型来实现,PubSub 使用像 Kafka 之类的服务器, 先将事件发送到队列,再使用诸如 Cassandra 的 NoSQL 数据库将事件存储在事件日志存储(Event Log Store)中。

如果读者想要了解更多关于该话题的细节,可以在奥莱利(O’Reilly)中查阅 Webber 的 Mini 书《 Migrating Java to the Cloud

查看英文原文: Kevin Webber on Migrating Java to the Cloud


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-11-30 18:001414
用户头像

发布了 21 篇内容, 共 13.4 次阅读, 收获喜欢 14 次。

关注

评论

发布
暂无评论
发现更多内容

盘点华为云GaussDB(for Redis)六大秒级能力

华为云开发者联盟

数据库 后端 华为云

开源实习经验分享:openEuler软件包加固测试

openEuler

开源 操作系统 部署 openEuler 实习

远程办公期间,项目小组微信群打卡 | 社区征文

IT蜗壳-Tango

6月月更 初夏征文

NLP 论文领读|文本生成模型退化怎么办?SimCTG 告诉你答案

澜舟孟子开源社区

人工智能 自然语言处理 机器学习 nlp 文本生成

“信任机器”为发展赋能

CECBC

什么是反向代理?Nginx反向代理如何配置?

wljslmz

nginx 反向代理 6月月更

为什么一定要从DevOps走向BizDevOps?

阿里云云效

阿里云 DevOps 研发 BizDevOps

毕业设计

ASCE

做一个 Scrollbar 的思考

cssghost

leetcode 474. Ones and Zeroes 一和零(中等)

okokabcd

LeetCode 动态规划 算法与数据结构

CleanMyMac X4.11最新版本号

茶色酒

CleanMyMac X

Ubuntu环境编译OpenJDK11源码

程序员欣宸

Java Openjdk 6月月更

元宇宙可能成为互联网发展的新方向

CECBC

攻防演练中的防泄露全家福

穿过生命散发芬芳

6月月更 防泄露

Android Studio Arctic Fox | 2020.3.1、Gradle 7.0升级记录

yechaoa

android Android Studio Gradle 6月月更 AGP

电商秒杀系统

Dean.Zhang

ElasticSearch从入门到精通:常用操作

Jackpop

居家办公没有“血泪史”| 社区征文

穿过生命散发芬芳

居家办公 6月月更 初夏征文

Windbg调试工具介绍

dvlinker

c++ windbg 调试工具

数字货币:影响深远的创新

CECBC

HashMap分析-扩容

zarmnosaj

6月月更

8253A寄存器浅析

乌龟哥哥

6月月更

全文手敲代码,教你用Java实现扫雷小游戏

华为云开发者联盟

Java

ElasticSearch从入门到精通:数据导入

Jackpop

学习总结

ASCE

激发新动能 多地发力数字经济

CECBC

一次革命、两股力量、三大环节:《工业能效提升行动计划》背后的“减碳”路线图

脑极体

让企业数字化砸锅和IT主管背锅的软件供应链安全风险指北

FN0

安全性 沙箱实验 开源软件供应链

实践GoF的23种设计模式:装饰者模式

华为云开发者联盟

开发 对象 装饰者模式

ElasticSearch从入门到精通:基础知识

Jackpop

ElasticSearch从入门到精通:Logstash妙用

Jackpop

Kevin Webber:Java的云迁移_语言 & 开发_Srini Penchikala_InfoQ精选文章