写点什么

软件架构分解、LinkedIn 日志系统、GWT HTML5 支持——架构周报

  • 2014-03-16
  • 本文字数:2277 字

    阅读完需:约 7 分钟

本期的架构周报主要关注软件架构分解技巧、LinkedIn 日志系统和 GWT 对 HTML5 storage 的支持和实现。

软件架构分解

对复杂的大规模软件系统,软件架构分解是架构设计中必不可少的关键步骤。通过分解识别架构元素,同时也是解决非功能需求的重要手段之一。好易科技 CTO 王国波在“软件架构分解”一文中从架构的定义出发,对架构形而上的本质给出了自己独特的理解。在架构设计上提出了架构分解过程模型和多维度多层次分解模型。他总结的架构分解原则包括:

  • 低耦合、高内聚:莱布尼兹指出:“分解的主要难点在于怎么分。分解策略之一是按容易求解的方式来分,之二是在弱耦合处下手,切断联系”。在弱耦合处下手,切断联系。太精辟了!高内聚、低耦合也是软件设计的基本原则,软件设计中的很多设计原则其实都可以认为它的派生或具体化,如单一职责原则、依赖倒置原则、模块化封装原则,这些原则在架构分解中也是适用的。
  • 层次性:分解通常是先业务后技术,循序渐进,先逻辑后物理,从上到下逐级进行分解展开:系统-> 子系统-> 模块-> 组件 -> 类。
  • 正交原则:和物理学中的正交分解类似,架构分解出的架构元素应是相互独立的,在职责上没有重叠。
  • 抽象原则:架构元素识别,在较大程度上是架构师抽象思维的结果,架构师应该具备在抽象概念层面进行架构构思和架构分解的能力。
  • 稳定性原则:将稳定部分和易变部分分解为不同的架构元素,稳定部分不应依赖易变部分。根据稳定性原则,将通用部分和专用部分分解为不同的元素;将动态部分和静态部分分解为不同的元素;将机制和策略分离为不同的元素;将应用和服务分离。
  • 复用性原则:就是对知识的重用. 重用类似系统已有的架构设计、设计经验、成熟的架构模式或参考模型、设计模式、领域模型、架构思想等,因为它们已经在不同的层次上分解识别出了许多架构元素,或者指出了一些分解方向,对我们的架构分解具有借鉴和指导作用。例如 IBM SOA 解决方案参考模型对 SOA 服务化具有重要的指导意义,我们可以参照它对系统进行初步的架构分解。

LinkedIn 日志系统

Jay Kreps 是 LinkedIn 公司的高级工程师,他撰文详细分析了 LinkedIn 公司中日志系统的发展历史、实现细节和经验。这里所说的“日志”不仅仅是程序员普通意义上的应用程序日志,还包括数据库日志、分布式系统日志,Jay 认为:

日志是一种简单的不能再简单的存储抽象。它是一个只能增加的,完全按照时间排序的一系列记录。日志记录的排序是由“时间”来确定的,这是因为位于左边的日志记录比位于右边的要早些。日志记录编号可以看作是这条日志记录的“时间戳”。在一开始就把这种排序说成是按时间排序显得有点多余 ,不过 ,与任何一个具体的物理时钟相比,时间属性是非常便于使用的属性。在我们运行多个分布式系统的时候,这个属性就显得非常重要。

日志并不是完全不同于文件或者数据表的。文件是由一系列字节组成,表是由一系列记录组成,而日志实际上只是按照时间顺序存储记录的 一种数据表或者文件。每个编程人员都熟悉另一种日志记录 - 应用使用 syslog 或者 log4j 可能写入到本地文件里的没有结构的错误信息或者追踪信息。为了区分开来,我们把这种情形的日志记录称为“应用日志记录”。应用日志记录是我在这儿所说的日志的一种低级的变种。最大的区别是:文本日志意味着主要用来方便人们阅读,而我所说明的“日志”或者“数据日志”的建立是方便程序访问。

有关 LinkedIn 日志系统的详情,读者可以查看 Jay 的原文

GWT 对 HTML5 storage 的支持

GWT 是 Google Web Toolkit 的简写。它是 Google 公司发布的基于 Java 语言开发 Web2.0 应用的工具包。在使用 GWT 开发 Web 应用时,开发人员是通过编写 Java 代码来创建 Web 界面中的组件。这样对于 Web 开发人员可以提高开发效率,更方便的调试。软件工程师郑峰详细介绍了 GWT 对 HTML 5 storage 的支持。

最早的 Cookies 自然是大家都知道,问题主要就是太小,大概也就 4KB 。而且 IE6 只支持每个域名 20 个 Cookies,太少了。优势就是大家都支持,而且支持得还蛮好。很早以前那些禁用 cookies 的用户也都慢慢的不存在了,就好像以前禁用 Javascript 的用户不存在了一样。Web Storage 是 HTML5 API 提供一个新的重要的特性 ; 最新的 Web Storage 草案中提到,在 web 客户端可用 HTML API,以 Key-Value 形式来进行数据持久存储 ; 目前主要的浏览器已经支持该功能 ; 常见的 web 客户端数据存储比较: HTML5 Web Storage 非常易于 Web 开发者使用,它提供了非常简单的获取或设置 Key-Value 对的 API; 支持的数据大小。

HTML5 Storage 分为 Session Storage 和 Local Storage,Session Storage 是用于本地存储一个会话中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此 Session Storage 不是一种持久化的本地存储,仅仅是会话级别的存储。Local Storage:简单来说,它就是一种让网页可以把键值对存储在用户浏览器客户端的方法。像 Cookie 一样,这些数据不会因为您打开新网站,刷新页面,乃至关闭您的浏览器而消失。

GWT 在 2.3 版本后开始支持 HTML5 Storage,我们可以使用 GWT 提供的标准类库,并且在支持 HTML5 的浏览器上来使用 HTML5 Storage 的功能。

对架构领域感兴趣的读者可以关注即将于 2014 年 4 月 25~27 日在北京国际会议中心召开的QCon 北京 2014 大会,专题包括知名网站案例分析扩展性、可用性与高性能云计算服务探秘大数据处理与大数据应用等,许多讲座都与架构相关。读者可点击大会主页查看详情。

欢迎读者朋友推荐或者投稿架构相关的文章,联系邮箱为 editors@cn.infoq.com ,标题请注明“架构专栏”。

2014-03-16 10:054126
用户头像

发布了 501 篇内容, 共 285.2 次阅读, 收获喜欢 64 次。

关注

评论

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

后端服务性能测试能力建设101

RingCentral铃盛

typescript 后端 ansible node,js SDET

入门前端 -- CSS

bo

CSS 前端 7月月更

如何写一篇百万阅读量的文章

六月的雨在InfoQ

内容 个人提升 写作技巧

10 个 Reduce 常用“奇技淫巧”

掘金安东尼

JavaScript 前端 7月月更

武林头条-建站小能手争霸赛

hum建应用专家

数据库 wordpass

7月27日19:30直播预告:HarmonyOS3及华为全场景新品发布会

HarmonyOS开发者

HarmonyOS

Python图像处理丨两种实现图像形态学转化运算

华为云开发者联盟

Python 人工智能 图像处理 图像

莫慌!Java 多商户外贸版系统这不就来了么

CRMEB

一文辨析 Java、JSP、JavaScript

攻城狮杰森

Java JavaScript jsp 7月月更

微服务化解决文库下载业务问题实践

百度Geek说

Java 微服务

SAP ABAP 守护进程的实现方式

汪子熙

操作系统 守护进程 SAP abap 7月月更

数据中台建设(二):数据中台简单介绍

Lansonli

数据中台 7月月更

智能合约dapp系统开发流程技术

开发微hkkf5566

Python 高阶

Damon

7月月更

元宇宙GameFi链游系统开发NFT技术

薇電13242772558

NFT 元宇宙 链游

基于 Flink CDC 实现海量数据的实时同步和转换

Apache Flink

大数据 flink 编程 流计算 实时计算

万字详解“用知识图谱驱动企业业绩增长”

博文视点Broadview

Happens-Before原则深入解读

转转技术团队

Java JVM java 并发

议程速递 | 7月27日分论坛议程一览

kk-OSC

开源 开放原子全球开源峰会

Linux 常用命令(二)

五分钟学大数据

Linux 7月月更

社区点赞业务缓存设计优化探索

得物技术

缓存 后端 重构 方案设计

一种分布式深度学习编程新范式:Global Tensor

OneFlow

深度学习 编程 分布式

期待已久的 RocketMQ Summit 等待你的参与!

阿里巴巴云原生

Apache 阿里云 RocketMQ 云原生 消息队列

一文详解Nodejs中fs文件模块与path路径模块

timerring

node.js path FS 签约计划第三季

JAVA编程规范之ORM 映射

源字节1号

后端技术

大咖观点+500强案例,软件团队应该这样提升研发效能!

万事ONES

Flink 在 讯飞 AI 营销业务的实时数据分析实践

Apache Flink

大数据 flink 编程 流计算 实时计算

SAP ABAP Netweaver 容器化的一些前沿性研究工作分享

汪子熙

SAP abap Netweaver Docker 镜像 7月月更

Okaleido生态核心权益OKA,尽在聚变Mining模式

小哈区块

软件架构分解、LinkedIn日志系统、GWT HTML5支持——架构周报_架构_崔康_InfoQ精选文章