QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:001506
用户头像

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

关注

评论

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

详解SQL优化必备:并行执行框架和执行计划

华为云开发者联盟

sql SQL优化 执行计划 GaussDB(for openGauss) 并行执行框架

质量基础设施一站式服务平台建设,NQI平台解决方案

模块八:设计消息队列存储消息数据的 MySQL 表格

ifc177

密码学系列之:memory-bound函数

程序那些事

加密解密 密码学 程序那些事

Rust从0到1-智能指针-内存泄漏

rust 智能指针 内存泄漏 循环引用 smart pointer

ReactNative进阶(十六):React-Native 组件生命周期

No Silver Bullet

生命周期 React Native 组件 7月日更

HarmonyOS开发者创新大赛作品《智能农场》相关开发技术分享

科技汇

【LeetCode】二叉树的层序遍历Java题解

Albert

算法 LeetCode 7月日更

毕业四年,我当初是如何走上编程这条路的!

Andy阿辉

程序员 开发 大学生 编程故事 自我成长

【源码篇】Flutter GetX深度剖析 | 我们终将走出自己的路(万字图文)

小呆呆666

flutter ios android 大前端

决定中国SaaS成败的三个关键问题

ToB行业头条

SaaS

用mysql模拟实现消息队列

白发青年

#架构实战营

在线IEEE浮点二进制计算器工具

入门小站

工具

机器学习

i30M

【Flutter 专题】87 初识状态管理 Bloc (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

快速构建JVM整体认知-JVM的生命周期

刘绍

Java 程序员 JVM JVM原理 规范

新手程序员必备10大技能

禅道项目管理

Linux 程序员 语言 git 学习

WATT NETWORK软件系统开发详情

“攻城狮”实用指南之Linux CPU性能优化

中原银行

Linux

设计消息队列存储消息数据的 MySQL 表结构

贯通

架构实战营

模块二作业-微信朋友圈复杂度分析

babos

#架构实战营

颠覆传统经营模式,区块链助力餐饮行业数字化革新

旺链科技

数字化 区块链技术 餐饮

MySQL事务分析

卢卡多多

事务 事务隔离 7月日更

Linux之chmod命令

入门小站

Linux

价值连城 杰弗里·欣顿(Geoffrey·Hinton)的采访 给AI从业者的建议 John 易筋 ARTS 打卡 Week 55

John(易筋)

ARTS 打卡计划

自建开发工具系列-Webkit内存动量监控UI(五)

Tim

typescript js 转 ts tsx tsconfig

Vue进阶(四十五):精解ES6 Promise 用法

No Silver Bullet

Vue Promise 异步编程 7月日更

禧大福酒口感怎么样?好喝又养生

Geek_50a546

Scrapy 爬取西刺代理存入MySQL & MongoDB 数据库(手把手教学,超详细步骤)

若尘

MySQL mongodb 爬虫 Scrapy 7月日更

【技术实践】基于Cglib动态代理,实现Spring的AOP核心功能!

小傅哥

spring 小傅哥 aop 动态代理 cglib

我是一个请求,我是如何被发送的?

华为云开发者联盟

注解 流程 CSE 请求 RestTemplat

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