写点什么

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

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

关注

评论

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

摘下手机赛场的夏季“金牌”,荣耀的“飞人之路”

脑极体

阿里顶级大佬整理出十六个专题的Java面试指南,金九银十不用愁!

Java 编程 架构 面试 架构师

101道经典JavaScript面试题总结(附答案,建议收藏)

前端依依

面试 大前端 JavaScrip

5 分钟,快速入门 Python JWT 接口认证

星安果

Python JWT

维护数据隐私和增强竞争优势的秘密

九河云安全

拍乐云创始人赵加雨:沉浸式音视频加持数智化未来世界

拍乐云Pano

一个算法“拿下”两个榜单!爱奇艺ICCV 2021论文提出人手三维重建新方法

爱奇艺技术产品团队

vr 论文 ICCV2021 高精度三维重建

字节跳动Android面试:2021Android大厂面试知识分享

欢喜学安卓

android 程序员 面试 移动开发

中台的前世今生

涛哥 数字产品和业务架构

企业架构 中台架构 中台的由来

强推!华为内部都在用的783页大数据处理系统:Hadoop源代码pdf

Java 编程 架构 面试 架构师

贝壳找房基于StarRocks构建全新统一的极速OLAP平台实践

StarRocks

数据库 数据分析 OLAP StarRocks

人在年轻的时候,最核心的能力是什么?

非著名程序员

认知提升 个人提升 提升自我 8月日更

第一次凡尔赛,字节跳动3面+腾讯6面一次过,谈谈我的大厂面经

Java~~~

Java 面试 微服务 多线程 架构师

Python RPC 不会?不妨看看这篇文章

星安果

Python RPC RPC架构

Github首次开放,一天遭狂转 50w 次!阿里内部不外传的 100 万字 Java 面试手册!

Java 程序员 架构 面试 计算机

资深大牛带你了解源码!最新Android面试题整理

欢喜学安卓

android 程序员 面试 移动开发

最全总结 | 聊聊 Python 数据处理全家桶(存储过程篇)

星安果

Python 数据库

镜像是什么意思?分类有哪些?

行云管家

网络安全 镜像 堡垒机 云厂商

使用PyTorch构建神经网络模型进行手写识别

Shirakawa

神经网络 机器学习 深度学习 PyTorch 手写识别

如何洞察出推荐的关键时刻

石云升

推荐 用户体验 体验设计 8月日更

现有市值管理机器人|交Y机器人系统源码搭建

Geek_23f0c3

做市机器人 去中心化市值管理机器人

云原生时代,腾讯如何做好容器安全体系建设?

腾讯安全云鼎实验室

腾讯云 容器

云计算以及云计算周边词概念简单介绍-行云管家

行云管家

云计算 服务器 云服务

一周信创舆情观察(7.26~8.1)

统小信uos

PostgreSQL正强势回归!

数据库 大数据 时序数据库 tsdb 数据智能

Linux内核分析学习路线总结(内核人员必看)

Linux服务器开发

操作系统 Linux内核 内核源码 内核开发 驱动开发

开放搜索电商行业模版驱动业务增长实践

阿里云大数据AI技术

架构实战营模块四作业

maybe

FastApi-06-请求体-3

Python研究所

FastApi 8月日更

从关门“振动”说起,在这部剧本杀综艺里,爱奇艺隐藏了多少技术“小心机”

爱奇艺技术产品团队

综艺节目 互动视频技术 爱奇艺

专访融云 CTO 任杰:构建通信云全能力

融云 RongCloud

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