HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

软件架构分解、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:053623
用户头像

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

关注

评论

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

软件测试 | 后端web开发框架

测吧(北京)科技有限公司

测试

十年业务开发总结,如何做好高效高质量的价值交付

阿里技术

质量保障 交付质量

老铁们看过来!2023首场昇腾AI开发者创享日来到“东北黑土地”沈阳

科技热闻

2022 IoTDB Summit:Apache IoTDB PMC 张金瑞《为物联网场景优化的时序数据库共识协议》

Apache IoTDB

大数据 IoTDB

ChatGPT开放API,上来就干到最低价,可以人手一个ChatGPT了

引迈信息

低代码 快速开发 openai ChatGPT

2022 IoTDB Summit:IoTDB PMC侯昊男《Apache IoTDB首创时序顺乱序分离存储引擎 IoTLSM》

Apache IoTDB

数据库 IoTDB

软件测试 | pytest测试框架

测吧(北京)科技有限公司

测试

Clean Start与Session Expiry Interval - MQTT 5.0新特性

EMQ映云科技

物联网 IoT mqtt 客户端 企业号 3 月 PK 榜

在文心一言出生地,百度悄悄燃烧AI小宇宙

白洞计划

百度 文心一言

FL Studio2023免费中文版数字音频工作站软件

茶色酒

FL Studio2023

LeetCode题解:2373. 矩阵中的局部最大值,遍历,详细注释

Lee Chen

JavaScript LeetCode

2022 IoTDB Summit:IoTDB PMC 曹高飞《Apache IoTDB 秒级扩容能力与存算分离实践》

Apache IoTDB

数据库 IoTDB

架构实战营模块1第3课 - 什么是面向复杂度架构设计

净意

研讨会回顾 | Perforce版本控制工具Helix Core入华十年,携手龙智赋能企业大规模研发

龙智—DevSecOps解决方案

版本控制 数字资产 游戏开发 数字资产管理 芯片研发

ClickHouse 与 Amazon S3 结合?一起来探索其中奥秘

亚马逊云科技 (Amazon Web Services)

新必应(New Bing)申请出错终极方案

kcodez

微软 ChatGPT New Bing

Hypium框架使能ArkTS应用高效测试

HarmonyOS开发者

HarmonyOS

【我在京东做研发】揭秘支撑京东万人规模技术人员协作的行云DevOps平台

京东科技开发者

软件测试 | parametrize实现参数化

测吧(北京)科技有限公司

测试

软件测试 | YAML是什么?

测吧(北京)科技有限公司

测试

JDK 环境配置

流火

Java centos jdk window

Portraiture4中文免费ps滤镜磨皮插件

茶色酒

Portraiture3

会声会影2023中文最新版消息

茶色酒

会声会影2023

Atlassian Server用户新选择 | 数据中心产品是否适合您的企业(3)?

龙智—DevSecOps解决方案

Server Atlassian Jira 数据中心版

从智能进化模型看用友BIP的AI平台化能力

用友BIP

人工智能 用友 数智化 用友BIP

高性能存储SIG月度动态:ANCK 5.10正式支持ublk、erofs容器镜像按需读时延优化60%

OpenAnolis小助手

操作系统 高性能存储 龙蜥社区 sig

2022 IoTDB Summit:IoTDB PMC 田原《大规模并行处理与边缘计算在 Apache IoTDB 中的实践》

Apache IoTDB

数据库 IoTDB

MongoDB写入数据策略

NineData

nosql mongodb Journaling 写入策略 读策略

零基础如何学习Web 安全,如何让普通人快速入门网络安全?

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

在深圳龙岗,看见空间智能化的潮水涌动

脑极体

全屋智能

开源如何推动云计算的发展与创新 | 雨林开源行

开源雨林

开源 kubenetes OpenStack

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