Martin

微服务架构有毒,何时不使用微服务?

醉酒当歌 提交于 2020-11-18 17:48:50
在过去的四年中,使用微服务来构建应用程序似乎成了一种标准。大多数我所合作过的团队也对此表现出了不同程度的兴趣。 微服务所承诺的弹性、高可用、低耦合、敏捷,以及能够解决单体架构带来的问题,这些都是它流行的主要原因。 但是近段时间来,对于微服务的一些保留意见和注意事项似乎引起了人们的注意。 在这篇文章中,我重点想讨论的是微服务的应用,它的缺点是什么,以及在什么情况下应该慎重考虑使用微服务架构。 什么是微服务 在工业级别,关于微服务基本特征的定义比较一致。 这些特征可以总结如下: 微服务是一种应用于组件设计(服务如何分组)和部署架构(服务如何部署和通信)的模式。 微服务适用于创建具有“一定功能复杂性”的分布式应用程序。 各个服务必须小。 各个服务按功能划分,实现关注点分离。 各个服务保持自治和相互解耦,可以独立进行部署、版本控制和伸缩。 各个服务之间通过轻量级 API 和异步通道相结合的方式进行通信。 各个服务拥有独立的状态,并且只能通过服务本身来对其进行访问。 一个典型的微服务实现模式如下图: 图 1:典型的微服务实现模式 从上图中我们可以看到: 微服务中的每组服务有自己的前端 (由一个 API 和一个可选的 UI 组件组成)、一个实现自身服务领域逻辑的域层以及独立的数据存储。 前端复合。 将所有前端组件(UI 组件或 API)组合成一致前端(复合 UI 或 API 网关)。

持续集成是什么?

牧云@^-^@ 提交于 2020-11-18 04:21:43
互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称CI)。 本文简要介绍持续集成的概念和做法。 一、概念 持续集成指的是,频繁地(一天多次)将代码集成到主干。 它的好处主要有两个。 (1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。 (2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。 持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。 Martin Fowler说过,"持续集成并不能消除Bug,而是让它们非常容易发现和改正。" 与持续集成相关的,还有两个概念,分别是持续交付和持续部署。 二、持续交付 持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。 持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。 三、持续部署 持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。 持续部署的目标是,代码在任何时刻都是可部署的

关于微服务架构的个人理解(一)

有些话、适合烂在心里 提交于 2020-11-02 18:19:50
前言:这段时间项目组正在加班加点的进行基于现有单体应用的微服务架构改造。微服务是一种架构概念,这个概念是2012年出现的,作为加快Web和移动应用程序开发进程的一种方法,2014年开始受到各方的关注,而2015年,可以说是微服务的元年;越来越多的论坛、社区、blog以及互联网行业巨头开始对微服务进行讨论、实践,可以说这样更近一步推动了微服务的发展和创新。而微服务的流行,Martin Fowler功不可没。 文章目录 什么是微服务架构 微服务的出现与发展 传统开发模式与微服务的区别 微服务的实践理论 什么是微服务架构 概念 :微服务架构是一种架构理念,是指将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。把一个大型的单体应用程序和服务拆分为数个或数十个的微小型服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。 定义 :围绕业务领域组件来创建应 用,这些应用可独立地进行开发、管理和迭代。在分散的组件中使用云架构和平台式部署、管理和服务功能,使产品交付变得更加简单。 本质: 微服务的本质,是指用一些功能比较明确、业务比较精炼的服务去解决更大、更实际的问题 。 微服务的出现与发展 微服务(Microservice)这个概念是2012年出现的,作为加快Web和移动应用程序开发进程的一种方法,2014年开始受到各方的关注,而2015年

诺奖得主被指骗局同谋,涉嫌非法临床研究 专访举报者

这一生的挚爱 提交于 2020-10-30 12:10:31
  10 月盛典刚过,就有往届诺奖得主接连翻车。继 2019 年诺奖得主格雷格塞门扎(Gregg L. Semenza)被爆出数十篇论文涉嫌造假后,2007 年诺奖得主马丁伊文思(Martin Evans)也遭遇学术不端指控。   10 月 19 日,《心血管转化研究杂志》(JCTR)发表 “编辑部关注” 称,马丁伊文思团队在 2016 年发表的希腊心脏干细胞研究存在伦理问题;与此同时,包括他本人在内的数名研究人员还涉嫌未注明有利益冲突的任职。   与格雷格塞门扎仅仅是 “纸上谈兵” 式的学术不端不同,马丁伊文思的研究涉及人体试验,其不端行为可以直接给患者带来健康乃至于生命的威胁。   马丁伊文思与中国不止一家公司有合作关系,一位接受 DeepTech 采访的华人学者由此提出疑问:伊文思在中国这边的合作与 “布局”,是否也会存在类似问题?      图 | 马丁伊文思(来源:《电讯报》)      图 | 2016 年希腊临床试验论文截图。   这项研究问题究竟有多严重?   马丁伊文思 1941 年出生于英国,1963 年从剑桥大学毕业后,进入伦敦大学,并于 1969 年获得解剖学和胚胎学博士学位。2007 年,他与另外两位美国科学家因 “基因敲除” 而分享了 2007 年诺贝尔生理学或医学奖。如今,他在英国卡迪夫大学担任教授。   伊文思是遭到指控的这项研究的第八作者

Java基础--集合解析-ArrayList

99封情书 提交于 2020-10-28 12:02:30
1.ArrayList中添加,获取,删除元素; 2.ArrayList中是否包含某个元素; 3.ArrayList中根据索引将元素数值改变(替换); 4.ArrayList中查看(判断)元素的索引;    5.根据元素索引位置进行的判断; 6.利用ArrayList中索引位置重新生成一个新的ArrayList(截取集合); 7.对比两个ArrayList中的所有元素; 8.判断ArrayList是否为空; 9.返回Iterator集合对象; 10.将集合转换为字符串; 11.将集合转换为数组; 12.集合类型转换; 13.去重复; 完整代码 package com.java.section10; /** * <p>Title: ArrayListDemo.java</p> * @author daxiang * @version 1.0 创建时间:2018年5月8日 下午9:21:22 */ import java.util.ArrayList; import java.util.List; public class ArrayListDemo { public static void main(String[] args) { // list中添加,获取,删除元素 List<String> person = new ArrayList<>(); person.add(

最有影响力的计算机视觉会议及期刊论文

此生再无相见时 提交于 2020-10-28 05:54:48
1 最有影响力的30篇计算机视觉会议论文 选取论文的原则: (1)会议论文,主要来源于以下会议:CVPR, ICCV, ECCV, BMVC, FG, ICIP, ICPR, WACV, ICASSP, MM, IJCAI, UAI, AAAI…(其实后面的几个会议都是打酱油的,AI类的期刊也木有高引CV文章,事实也是如此,没有收录ICML和NIPS等,见谅) (2)发表在2000年以后,数据来源于微软学术搜索(http://academic.research.microsoft.com/),2012年12月初的检索结果 (3)检索次数大于200,PER>50,微软学术搜索的被检索次数未必精确,但能反应大概趋势,PER指意味着每年检索量,自发表次年算到2012年,PER=Cited/(2012-YEAR) 榜单Top 30如下,欢迎拾遗补缺: [1] Rapid Object Detection using a Boosted Cascade of Simple Features (Citations: 3296, PER=299.64) Paul A. Viola, Michael J. Jones @CVPR , vol. 1, pp. 511-518, 2001 [2] Histograms of Oriented Gradients for Human Detection

像经营公司一样经营好自己的职业生涯,自此打破35岁焦虑!

爱⌒轻易说出口 提交于 2020-10-14 16:06:02
王小刚毕业于西安电子科技大学计算机学院,硕士研究生学历,曾先后服务于华为、IBM、中国移动无线数据研发中心,参与过3G基站、MISC(移动信息服务中心)等产品/系统的研发工作,担任过项目经理、质量保证经理、质量总监等职务。 他还是业界知名的咨询顾问和培训讲师,拥有NPDP、PMP、PBA、ACP、CSM、CAL等多项认证资质。六西格玛黑带,致力于研发管理、项目管理、产品创新、过程改进等领域的研究工作,帮助IT企业持续提升产品创新与研发管理能力,先后为100多家企业的20000多名软件开发人员提供过咨询和培训服务。 在他看来,翻译软技能系列,是为了一个承诺,一个对《软技能》作者约翰·森梅兹(John Sonmez)的承诺。 4年前《软技能:代码之外的生存指南》得到了软件行业泰斗级人物Robert C. Martin和著名软件架构师Scott Hanselman作序推荐!一经推出便受到程序员的广泛关注,如今这本书已经成为程序员职场生涯必读经典之一。 今天本书作者约翰·森梅兹(John Sonmez)带来了他的新作《软技能2:软件开发者职业生涯指南》,这本为软件开发者量身定做的职业发展指南:以程序员的职业生涯线为基础讲述程序员所需要的各种知识、技能、思维、认知和方法,是一本程序员人手必备的百科全书 。 两本畅销书的出版离不开一个人,他就是《软技能》系列译者王小刚老师。初遇《软技能》时

Visualizing Dataflow Graphs of Deep Learning Models in TensorFlow

梦想的初衷 提交于 2020-10-13 06:19:32
论文传送门 作者 华盛顿大学 Kanit Wongsuphasawat 谷歌研究院 Daniel Smilkov James Wexler Jimbo Wilson Dandelion Mane Doug Fritz Dilip Krishnan Fernanda B. Viegas Martin Wattenberg 摘要 我们介绍了TensorFlow Graph Visualizer,它是 TensorFlow 机器智能平台的一部分。该工具通过可视化其基础的数据流图来帮助用户了解复杂的机器学习架构。该工具通过应用一系列图转换,使得标准布局技术能够生成清晰的交互式图表。至于整理图,我们将非关键节点与布局分离。为了提供概述,我们使用源代码中注释的层级结构。为了支持按需探索嵌套结构,我们执行边绑定以实现稳定且响应迅速的集群扩展。最后,我们检测并突出显示重复的结构,以强调模型的模块化组成。为了演示可视化工具的实用性,我们描述了示例使用场景并报告了用户反馈。总体而言,用户发现可视化工具对于理解、调试和共享其模型的结构很有用。 Design of the TensorFlow Graph Visualizer 力导引布局 日志节点会干扰不同子图的独立性 图布局缺乏层次结构 TensorFlow Graph Visualizer 去除日志节点 多个元操作组合成子算法或子步骤

敏捷软件工程实践书籍

☆樱花仙子☆ 提交于 2020-10-05 06:56:36
Scrum转型想要做好,第一步先了解并真正落实Scrum,那么我推荐的Scrum书籍是要看懂并实践的。第二步是团队的工程实践要做扎实。 下面推荐工程实践书单: 重构:改善既有代码的设计 解析极限编程 : 拥抱变化 代码整洁代码 程序员的职业素养 修改代码的艺术 编写可读代码的艺术 测试驱动开发 : 实战与模式解析 Cucumber:行为驱动开发指南 实例化需求 驯服烂代码 重构:改善既有代码的设计 作者:Martin Fowler 出版社:人民邮电出版社 译者:熊节 链接: https://item.jd.com/12584498.html 内容简介: 重构,一言以蔽之,就是在不改变外部行为的前提下,有条不紊地改善代码。多年前,正是本书原版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分。本书也因此成为与《设计模式》齐名的经典著作,被译为中、德、俄、日等众多语言,在世界范围内畅销不衰。 本书凝聚了软件开发社区专家多年摸索而获得的宝贵经验,拥有不因时光流逝而磨灭的价值。今天,无论是重构本身,业界对重构的理解,还是开发工具对重构的支持力度,都与本书最初出版时不可同日而语,但书中所蕴涵的意味和精华,依然值得反复咀嚼,而且往往能够常读常新。 解析极限编程 : 拥抱变化 作者:Kent Beck / Cynthia Andres 出版社

信息安全从业者书单推荐(2020.6.28更新)

馋奶兔 提交于 2020-10-03 08:01:28
近来也读过不少书,推荐几本个人觉得不错的: 《Vue.js项目开发实战》张帆 《我的第一本算法书》【日】宫崎修一;石田保辉,入门书籍,无代码进行图解 《算法图解:像小说一样有趣的算法入门书》【美】Aditya Bhargava 《编译与反编译技术实战》庞建民 《重构:改善既有代码的设计》【美】Martin Fowler 《Docker技术入门与实战》杨保华;戴王剑;曹亚仑 《一本小小的蓝色逻辑书》【加】布兰登•罗伊尔 《精进:如何成为一个很厉害的人》采铜 最近也买了极客时间上的几门课程,有几门我觉得不错的,虽然没有实体书出版,但课程依然还是按照书籍写作方式来写,比较系统化,有兴趣的也可以看看: 《左耳听风》 《软件工程之美》 《项目管理实战20讲》 不过有一门课是不推荐的,就是《程序员进阶攻略》,后来作者也出了实体书,但总觉得作者对武侠小说过着迷,课程写得有点过于武侠风,技术与武侠关联得过于牵强。 书单均是个人看过或者业界认可的经典书籍,跟网上罗列的安全书单不同,并非把网店上的各安全书籍都罗列上的。如果你有何好书推荐可在 Issues(https://github.com/riusksk/secbook/issues) 上提交,或者提交合并,待我看过之后,如果觉得可以就会在此处更新,这里也会不定期更新书单。 文末附完整的思维导图,欢迎收藏。 计算机及系统原理 · 《编码