《架构师 2018 6月刊》笔记

迷你书地址:http://www.infoq.com/cn/minibooks/architect-201806

现在的时代本来就是终身学习的时代,不光是领域知识,连常识都在不断更新,你不去更新自己的知识,那只有落伍。
不过,学习有技巧,可以学的快一些,学的轻松一些。
这个技巧指的是两方面:

  • 一个是学会学习。
  • 另一个是掌握核心知识,每个领域的核心知识没有那么容易被替代。

焦虑是这个时代的常态,学会与它为伍,这是你第一个也是终身都需要去学习的。

Google 力推的那些前端技术,最近有何进展?

Angular:https://angular.io/
Angular 是前端三大框架之一,它与React、Vue 的“争斗”一直都没有停止过。
在今年I/O 大会开始的前几天,Angular 6 正式发布,添加了ng update 和ng add 这样的新功能,让你的应用程序保持最新的状态,帮助Angular 开发者加快创新的步伐。

PWA:https://developers.google.com/web/progressive-web-apps/
Progressive Web App,相当于谷歌小程序。具体的意思就是在移动端利用提供的标准化框架,在网页应用中实现和原生应用相近的用户体验,渐进式网页应用。
它同样无需下载安装,却可以和本地APP一样,放置在桌面上、显示在安卓APP列表中。
而且应用通知不再以Chrome的名义显示,而是直接以本地APP通知的形式出现,简直和本地APP没有太大区别。

一个示例参见 https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/?hl=zh-cn

PWA 天气预报

Service Worker:
Service Worker 是近年来Web 最大的改进之一,它是Chrome 团队力推的一个Web API,它将开发人员从页面的生命周期中解放出来,运行于浏览器后台,可以控制打开作用范围下的所有页面请求,使Web 应用程序能够脱机工作。

Service Worker 开发团队创建了Workbox 库:
https://developers.google.com/web/tools/workbox/ JavaScript Libraries for adding offline support to web apps. 支持离线网页。
Workbox provides a few caching strategies that you can use. For example, your CSS could be served from the cache first and updated in the background or your images could be cached and used until it’s a week old, after which it’ll need updating.

WebAssembly:
WebAssembly 使网站能够运行用C 或C ++ 等语言编写的高性能低级代码,为Web 打开了新世界。

Polymer:https://www.polymer-project.org/3.0/start/
Polymer 是Google 主推的一个 JavaScript 库,它可帮助你创建自定义的可重用 HTML 元素,并使用它们来构建高性能、可维护的 App。

例如,你可以创建一个如下所示的按钮组件,然后通过代码 <icon-toggle></icon-toggle> 来使用:

Polymer 创建的按钮组件

AMP:https://www.ampproject.org/zh_cn/
AMP 是Google 推出的一种为静态内容构建Web 页面,提供可靠和快速渲染,加快页面加载速度的Web 组件库。

Lighthouse:https://developers.google.com/web/tools/lighthouse/?hl=zh-cn
Lighthouse 是一个分析网络质量的工具,为你提供网站性能衡量指标和指导,它可以直接从Chrome DevTools 内部进行访问,从命令行运行或与其他开发产品集成,仅在2018 年,就有50 万开发人员在他们的网站上运行Lighthouse。

如何做好文本关键词提取?从达观数据应用的三种算法说起

达观数据:http://www.datagrand.com/

无监督文本关键词抽取流程图

无监督关键词抽取算法可以分为三大类,

  • 基于统计特征的关键词抽取
  • 基于词图模型的关键词抽取
  • 基于主题模型的关键词抽取
1. 基于统计特征的关键词抽取算法

利用文档中词语的统计信息抽取文档的关键词。通常将文本经过预处理得到候选词语的集合,然后采用特征值量化的方式从候选集合中得到关键词。

    1. 基于词权重的特征量化
      基于词权重的特征量化主要包括词性、词频、逆向文档频率、相对词频、词长等。
    1. 基于词的文档位置的特征量化
      这种特征量化方式是根据文章不同位置的句子对文档的重要性不同的假设来进行的。通常,文章的前N 个词、后N 个词、段首、段尾、标题、引言等位置的词具有代表性,这些词作为关键词可以表达整个的主题。
    1. 基于词的关联信息的特征量化
      词的关联信息是指词与词、词与文档的关联程度信息,包括互信息、hits 值、贡献度、依存度、TF-IDF 值等。
      我们介绍几种常用的特征值量化指标。
  • 1.1 词性
    词性时通过分词、语法分析后得到的结果。现有的关键词中,绝大多数关键词为名词或者动名词。一般情况下,名词与其他词性相比更能表达一篇文章的主要思想。

  • 1.2 词频
    词频表示一个词在文本中出现的频率。一般我们认为,如果一个词在文本中出现的越是频繁,那么这个词就越有可能作为文章的核心词。

  • 1.3 位置信息
    一般情况下,词出现的位置对于词来说有着很大的价值。例如,标题、摘要本身就是作者概括出的文章的中心思想,因此出现在这些地方的词具有一定的代表性,更可能成为关键词。

  • 1.4 互信息
    关于互信息,参见 http://www.fuzihao.org/blog/2015/01/17/%E4%BA%92%E4%BF%A1%E6%81%AF%E7%9A%84%E7%90%86%E8%A7%A3/
    当使用互信息作为关键词提取的特征量化时,应用文本的正文和标题构造PAT 树,然后计算字符串左右的互信息。

  • 1.5 词跨度
    词跨度是指一个词或者短语字文中首次出现和末次出现之间的距离,词跨度越大说明这个词对文本越重要,可以反映文本的主题。一个词的跨度计算公式如下:

    一个词的跨度计算公式

  • 1.6 TF-IDF值
    参见 TF-IDF与余弦相似性的应用 - 学习笔记

基于统计特征的关键词的重点在于特征量化指标的计算,不同的量化指标得到的结果也不尽相同。同时,不同的量化指标也有其各自的优缺点,在实际应用中,通常是采用不同的量化指标相结合的方式得到Top K 个词作为关键词。

2. 基于词图模型的关键词抽取算法

基于词图模型的关键词抽取首先要构建文档的语言网络图,然后对语言进行网络图分析,在这个图上寻找具有重要作用的词或者短语,这些短语就是文档的关键词。
语言网络图中节点基本上都是词,根据词的链接方式不同,语言网络的主要形式分为四种:

  • 共现网络图
  • 语法网络图
  • 语义网络图
  • 其他网络图。

在语言网络图的构建过程中,都是以预处理过后的词作为节点词与词之间的关系作为边
在语言网络图中,边与边之间的权重一般用词之间的关联度来表示
在使用语言网络图获得关键词的时候,需要评估各个节点的重要性,然后根据重要性将节点进行排序,选取 Top K 个节点所代表的词作为关键词。
节点的重要性计算方法有以下几种方法:

  • 2.1 综合特征法:从网络的局部属性和全局属性角度去定量分析网络结构的拓扑性质

    • 度:与该节点直接向量的节点数目
    • 接近性:节点到其他节点的最短路径之和的倒数,表示的是信息传播的紧密程度
    • 特征向量:一个节点的中心化指标应该等于其相邻节点的中心化指标之线性叠加
    • 集聚系数:它的相邻的节点之间的连接数与他们所有可能存在来链接的数量的比值
    • 平均最短路径:节点的所有最短路径之和的平均值,表示的是一个节点传播信息时对其他节点的依赖程度
  • 2.2 系统科学法:思想是节点重要性等于这个节点被删除后对于整个语言网络图的破坏程度。重要的节点被删除后会对网络的呃连通性等产生变化。如果我们在网络图中删除某一个节点,图的某些指定特性产生了改变,可以根据特性改变的大小获得节点的重要性,从而对节点进行筛选。

  • 2.3 随机游走法:TextRank 算法。

3. 基于主题模型的关键词抽取算法

算法步骤如下:

    1. 从文章中获取候选关键词。即将文本分词,也可以再根据词性选取候选关键词。
    1. 根据大规模预料学习得到主题模型。
    1. 根据得到的隐含主题模型,计算文章的主题分布和候选关键词分布。
    1. 计算文档和候选关键词的主题相似度并排序,选取 Top K 个词作为关键词。

算法的关键在于主题模型的构建。主题模型是一种文档生成模型,对于一篇文章,我们的构思思路是先确定几个主题,然后根据主题想好描述主题的词汇,将词汇按照语法规则组成句子,段落,最后生成一篇文章。
主题模型也是基于这个思想,它认为文档是一些主题的混合分布,主题又是词语的概率分布。

优秀架构师必须掌握的架构思维

架构的本质是管理复杂性,抽象、分层、分治和演化思维是我们工程师/ 架构师应对和管理复杂性的四种最基本武器。

1. 抽象思维
2. 分层思维

有些层次是纵向的,它贯穿所有其它层次,称为共享层。分层也可以认为是抽象的一种方式,将系统抽象分解成若干层次化的模块。


分层
3. 分治思维
4. 演化思维

架构既是设计出来的,同时也是演化出来的,对于互联网系统,基本上可以说是三分设计,七分演化,而且是在设计中演化,在演化中设计,一个不断迭代的过程。

区块链没有未来,是时候抛弃它了

区块链就是这样的一种技术:“让我们一起来创建一长串小文件,每个文件里包含了上一个文件的散列值、一些新数据和算法的答案,如果有人愿意在他们的电脑上验证并保存这些文件,就奖励他们一些钱”。
而关于区块链的隐喻是这样描述的:所有人都把自己的记录保存在一个不属于任何人的防篡改仓库里。

区块链系统并不能保证人们输入的数据一定是可信的,它只能保证当中的数据不会被篡改。一个果农在芒果上喷了农药,但他仍然可以在区块链系统里记录说他的芒果是完全有机的。一个腐败的政府可以创建一个区块链系统用于统计选票,并给它的亲信偷偷输入额外的数百万张选票。一个获得数字执照的投资基金会仍然有可能错配资金。

使用去中心化的防篡改仓库来跟踪芒果的产地、新鲜度、是否用过农药,看起来像那么回事。但实际上,食品安全法、非盈利机构或政府的检验员、独立的新闻媒体、获得一定授权的举报者、有信誉的食品商店、本地农场市场在这方面做得更好。真正关心食品安全的人不会使用区块链,因为他们认为信任强过无信任。区块链技术已经暴露出它的弊端,将数据保存成一长串小文件与果农是否如实报告芒果是否使用了农药之间并没有必然的联系。类似的,点对点的交互缺乏监管、规范约束、中间人或信任实体,是一种非常糟糕的授权方式。
去信任的项目之所以会失败,是因为它们无法给用户带来真正的好处。信任真的太重要了!在一个无法律、无信任的世界里,自利是仅剩的原则,安全只存在于妄想之中,这样的世界绝对不是天堂,而是藏污纳垢之地。

一个可供中小团队参考的微服务架构技术栈

近年,Spring Cloud 俨然已经成为微服务开发的主流技术栈,在国内开发者社区非常火爆。
我认为Spring Cloud 技术栈中的有些组件离生产级开发尚有一定距离。
另外Spring Cloud 体系还缺失一些关键的微服务基础组件,比如Metrics 监控,健康检查和告警等。

微服务架构技术栈

主要包含11 大核心组件,分别是:
核心支撑组件:

    1. 服务网关Zuul
    1. 服务注册发现Eureka+Ribbon
      针对微服务注册发现场景,社区里头的开源产品当中,经过生产级大流量验证的,目前只有Netflix Eureka 一个,它也已经纳入Spring Cloud体系,在社区中有众多成功应用,例如携程Apollo 配置中心也是使用Eureka 做软负载。其它产品如Zookeeper/Etcd/Consul 等,都是比较通用的产品,还需要进一步封装定制才可生产级使用。Eureka 支持跨数据中心高可用,但它是AP 最终一致系统,不是强一致性系统
    1. 服务配置中心Apollo
      Spring Cloud 体系里头有个Spring Cloud Config 产品,但是功能远远达不到生产级,只能小规模场景下用,中大规模企业级场景不建议采用。携程框架研发部开源的Apollo 是一款在携程和其它众多互联网公司生产落地下来的产品,开源两年多,目前在github 上有超过4k 星,非常成功,文档齐全也是它的一大亮点,推荐作为企业级的配置中心产品。
    1. 认证授权中心Spring Security OAuth2
      Spring Security OAuth2 是Spring Security 基础上的一个扩展,支持四种主要的OAuth2 Flows,基本可以作为微服务认证授权中心的推荐产品。
    1. 服务框架Spring MVC/Boot

监控反馈组件:

    1. 数据总线Kafka https://kafka.apache.org/
      在监控一块,日志和Metrics 等数据可以通过Kafka 做收集、存储和转发,相当于中间增加了一个大容量缓冲,能够应对海量日志数据的场景。除了日志监控数据收集,Kafka 在业务大数据分析,IoT 等场景都有广泛应用。如果对Kafka 进行适当定制增强,还可以用于传统消息中间件场景。
      Kafka 的特性是大容量,高吞吐,高可用,数据可重复消费,可水平扩展,支持消费者组等。Kafka 尤其适用于不严格要求实时和不丢数据的大数据日志场景。
    1. 日志监控ELK
      ELK(ElasticSearch/Logstash/Kibana)是日志监控一块的标配技术栈。
    1. 调用链监控CAT
    1. Metrics 监控KairosDB
    1. 健康检查和告警ZMon
    1. 限流熔断和流聚合Hystrix/Turbine
      Hystrix 已经被纳入Spring Cloud 体系,它是Java 社区中限流熔断组件的首选(目前还看不到第二个更好的产品)。Turbine 是和Hystrix 配套的一个流聚合服务,能够对Hystrix 监控数据流进行聚合,聚合以后可以在Hystrix Dashboard 上看到集群的流量和性能情况。

实现生产级的Migrate 操作

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,710评论 4 376
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,839评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,295评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,776评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,198评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,074评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,200评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,986评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,733评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,877评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,348评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,675评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,393评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,209评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,212评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,003评论 2 280

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,112评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,432评论 6 342
  • 四. 严家嫂子(一) 外婆的婚礼是仓促而成的,蜜月之类的就更谈不上了,从早到晚,就是一家子的柴米油盐,吃穿用度。 ...
    石里夜人阅读 250评论 1 12
  • 系统登录界面的制作 一、登录界面 1、登录界面的设计 (1)首先在工具箱中拖2个Lable控件,接着依次对2个La...
    美人宜修_阅读 283评论 0 0
  • 我得到一根红绳 系在你的手上 带着我的祝福 生日快乐
    流沙不可逆阅读 114评论 0 0