《架构师》期刊摘要(2016年)一

一、《软件设计精要与模式》作者张逸在接收InfoQ采访时曾说:“评价一个架构的优劣方法之一是,把每个功能、非功能的因素扩大化,再看这个架构会不会出问题。”(本人赞同此说法)他的观点是说,架构设计要面向业务未来,而未来是不断发展的。架构不仅要承载业务的增长,还要兼顾技术发展的趋势。

《前言》(2016年6月)

 

二、我想任何人做架构多需要秉承“业务需求决定技术演化路线”的思路,那些暴露出来的现状和问题都驱动系统去转型,在系统和人之间找到一种最佳的合作模式,匹配已有的生产力和生成关系。正如软件开发学泰斗Kent Bech所说的:设计,是让你在长期过程中保持软件变化更加容易。

 

    在体量还不大的情况下,首先应该解决的是搭建好一套绝对稳定的基于模块化的平台,待体量逐渐长大、再去根据实际需求进行拆分、团队也随之变化。再下个阶段体量大道饱受单体模式智库,也应该首先建设平台服务,建设好之后,先按照大的粒度进行拆分,逐步再微服务化,否则,直接上服务化甚至微服务化都是非常危险的。

 

    微服务化就是以一系列小的服务开发支撑一个应用的方法论,服务独立在自己的进程中,通过轻量级通信机制交互(通常为HTTP),这些服务时围绕着业务上的组织结构来构建的,全自动的、独立部署。几乎看不到中心化的服务管理基础设施,可以使用不同的编程语言和数据存储技术来实现不同的服务。

《Building Microservices》一书中提到“微服务化就是一堆小而自治的服务,让他们一起工作起来”。微服务化的特点在于:

 

    1、模块即服务

    微服务中的组件在逻辑或者物理层次更趋于细分,这个细分不是极致的,而是一种力度适中的选择,通常这些组件在前期可以是一些模块,但是当需要时,例如业务上需要拆分独立,或者非功能需求上需要扩容等,都可以灵活的拆解出来。

    2、独立自治

    这意味着服务独立开发、独立测试,独立发布、独立部署、独立运维的,某个细分团队负责整个生命周期管理,这就是“康威定律”的通俗解释,官方解释是“一个组织的设计成果,其结构往往对应于这个组织中的沟通结构”,服务的规划不就是多人、跨团队协作的沟通模式吗?

    同时去除了牵一发而动全身的问题,单一职责的来进行修改需求或者重构一个点,开发和构建方便,不影响整个产品的功能,一个bug不会crash掉整个产品,针对不同的类型,区分“计算密集型”还是“IO密集型”,区分业务上更好使用关系型还是NoSQL,区分2/8原则(即80%经常修改的服务独立出来自成一家),区分短板功能、针对瓶颈可以做水平扩展、避免资源竞争,甚至可以区分技术栈、突破语言限制独立的服务可以实现非常大程度上的复用,服务之间依赖轻量级的接口,而不是模块。

 

    3、去中心化的数据管理

    微服务在服务拆分的同时,也需要将数据库分离,独立的服务维护独立的数据库,这对数据库也是减负,同时技术选型、SLA保证都会区分开来,把精力留给那些重要的业务数据库,进行分级的对待,而不能像以前那样一视同仁,一个不重要的逻辑库的bad SQL慢查询,阻塞了其他正常的查询,这事完全可以避免的。

    4、轻量级的通信协议

    传统的SOA使用ESB或者WebService这种重量级的解决方案,微服务推荐使用一些更轻量级的解决方案,要通用性,可以用RESTFul架构,使用HTTP通道,支持JSON序列化协议;需要高性能的,可以考虑使用高性能IO模型,比如Epoll、Actor等,基于TCP通道,使用protobuf序列化协议,同时保持长连接;要异步,可以通过持久的RabbitMQ或者高性能的ZeroMQ来做P2P、pub/sub等。而这种轻量级还需要体现在代码调用中,模块化直接通过函数、方法调用即可,服务化后能不能在API层面做到无侵入、无缝切换、简单配置,这些都是服务化框架要支持的。

    5、为失败设计

    服务化,因为着调用时跨进程的、分布式的,这种分布式特性引起的天然不可靠性,需要变为相对可控。也就是服务间的通信要架设不会成功,为失败处理。

    为了不影响整个产品,要做错误隔离,可以考虑熔断(circut break)、船舱隔离模式、限流、回退等手段,最后还有幂等性等问题(重试会不会对业务造成影响)。

    6、基础交付设施自动化

    这个特点是整个微服务中最大的亮点,包括持续集成CI、持续交付CD和Pass平台结合。微服务在细分的背景下,在project结果、物理结果上都提高了一个复杂度,就需要在基础交付上做一个大的转变,自动化部署则是必须的。

    

    微服务的缺点:

    1、分布式调用造成的性能、延迟问题。(可以采取的措施包括粒度适中、批量、高性能RPC、异步通信等)

    2、可靠性不好保证。(为失败而设计)

    3、数据一致性难以保证。(分布式设计本身涉及到的问题,最终一致性、强一致性等)

    4、整体复杂度提升。服务多、依赖多、调用多、契约如何管理、监控如何做,调用链上怎么确定哪个点有问题,服务的SLA保障、性能、错误率、告警、集成测试、部署等。

 

    架构只是标准、骨骼,对微服务的讨论不应该让我们忘记了更重要的问题,驱动软件项目成功和失败的重要因素。软因素,比如团队中人的素质、以及他们如何彼此合作、沟通,这都会丢是否使用微服务有很大的影响。在纯技术层面上来讲,应该把重点放在干净的代码、完善到位的测试,并持续关注架构演进,这才是一个软件工程师的根本职责。

《谈谈后端业务系统的微服务化改造》(2016年6月)

 

三、传统的企业级应用是单体应用,一般是分层结构,如表现层、应用层、领域层、数据层,这主要是水平切分的思想。

    随着互联网应用的发展,特别是大型电商系统,业务非常复杂。这种巨型系统,首先要关注的是如何根据业务划分子系统,然后是子系统间如何协作,最后才是子系统内部实现。SOA设计可以有效支持前面两步,在SOA体系里,每个子系统是独立的服务,服务接口体现子系统协作关系,至于子系统内部,直接作为黑盒处理。

 

    所以对于复杂系统,首先采用SOA垂直切分子系统,然后使用分层设计水平切分大单个子系统,服务化把传统的分层设计往前更推进一步。

 

    当然SOA本身也在不断发展,最初跨企业的Web Service交互可以认为1.0时代,支持企业内部系统间轻量级访问、支持服务治理,可认为是2.0时代;服务进一步分层和微服务化可认为3.0时代。

 

    “业务在变,技术在变,架构也在变。变的是形式,不变的是本质,架构为了系统更有序,系统为了业务更快速,业务为了生活更美好”。

《卷首语--架构发展趋势和现状》(2016年三月)

四、

    “KumuluzEE是第一个使用标准Java API的微服务框架。微服务架构的重点是将应用程序开发成服务并将这些服务单独部署;没有一个框架提供自动化部署和配置,是不可能使用JavaEE实现真正的微服务架构的”。

 

架构师电子杂志2018年全年刊 架构师杂志2018年所有的电子期刊,分享给从事架构设计工作的童鞋们 立即下载

相关推荐

InfoQ架构师杂志2014合集

InfoQ架构师杂志2014年的合集,不可多得的软件架构设计方面的资料。同时对于想往架构设计方面发展的程序员也有很大的帮助

《架构师》期刊摘要(2015年)一

一、架构应该是从简单到复杂,不断演变的一个过程。工程师思维驱动人们去开发一个理想化的系统。然而最好的架构却通常不是最理想的架构,而是最适合的架构。我们见过许多因为过度的架构设计而浪费宝贵的时间的案例,更有甚者因为过多不切实际的假想而导致架构迟迟无法落定,这种现象的术语描述,叫做“分析瘫痪”。     所以优秀的架构应该结合业务目标,在权衡之中寻求一个最优的点。   二、分布式系统在扩展性...

深入一点 510

3-RRR并联机器人结构详解:从运动学到奇异点分析(附MATLAB仿真代码)

本文详细解析了3-RRR并联机器人的结构设计、运动学建模及奇异点分析,并提供了MATLAB仿真代码。通过对称性设计和可分析性,3-RRR结构成为教学与研究的理想对象。文章从基础杆件参数设置到奇异位形的实时捕捉,深入探讨了机构运动的数学本质,并分享了仿真调试中的实用技巧,助力工业自动化和精密控制应用。

sunny的博客 364

InfoQ中文站电子杂志《架构师》8月刊出版

由InfoQ中文站推出的电子杂志《架构师》8月刊已经发布!该杂志是InfoQ中文站于2008年推出试刊,于2009年7月正式创刊的全新电子杂志, 面向高端开发人员和项目经理。和以往的各期一样,本期《架构师》向大家提供过去一个月中InfoQ中文站最为精华和热点的内容。每条新闻,每篇文章,每个 推荐,都是经过编辑们精心甄选。为了保证能够将一个月以来技术社区的飞速发展浓缩在短短数页纸上,InfoQ中文站...

啊啊啊啊2 442

Camera tuning flow相机调试流程

相机调试流程分为三大模块:ProcessRaw处理原始数据(黑电平校正、阴影校正),3A实现自动控制(曝光/对焦/白平衡),ISP进行图像精加工(伽马校正、锐化降噪、色彩处理)。三个阶段环环相扣,前阶段为后阶段提供基础,最终输出画质优良且风格化的图像。

weixin_64706696的博客 1229

量子密钥分发系统的设计与实现(二):光路子系统初步讨论

本文主要对量子密钥分发系统中的光路子系统方案进行了讨论。

量子领域相关话题 2406

《架构师》期刊摘要(2015年)三

一、微服务解决我们哪些痛点呢?     1)技术架构、平台升级难:传统的单体式架构系统倾向于采用统一的技术平台或者方案解决所有的问题;而微服务的异构性,可以针对不同的业务特征选择不同的技术方案,有针对性的解决具体的业务问题。     对于单体式架构系统,初始的技术选型严格限制将来采用的不同语言或者框架的能力,没有完备的功能测试集,很难平滑的完成替换,而且系统规模越大,风险越高。基于微服务架...

深入一点 288

英飞凌 AURIX 系列单片机的HSM详解(1)——何为HSM

1. 概述 随着汽车上通信系统越来越复杂,云端远程通信的场景越来越多,信息安全变得越来越重要,在通信领域常用的AES、SHA、RSA等加密算法被越来越多地应用到汽车上。但通常这类加解密算法都需要大量的数学运算,需要消耗很多CPU时间和资源,汽车上的ECU又有比较高的实时性要求,为了节省主CPU的资源,HSM应运而生。 HSM(Hardware Security Module),是MCU上专门用于实现加解密算法的一个外设,它一般会有一个独立的CPU,专门用来进行加解密运算,还有一些针对特定算法的硬件加速器(如

weixin_42967006的博客 4万+

软件工程研究领域最顶级的两个期刊

本文将向大家介绍软件工程研究领域最顶级(最牛X)的两个期刊,分别是IEEE Transactions on Software Engineering (TSE)和ACM Transactions on Software Engineering Methodology (TOSEM)。TSE和TOSEM代表了当前软件工程领域国际最高研究水平,在这两个期刊上发文章非常难,其中很多论文都是软件工程领域的经典之作,具有极高的学术价值和实用价值。如果从事软件工程研究,TSE和TOSEM是非常重要的参考资料,会给软件工

刘伟技术博客 4万+

学Simulink——基于直流电机的建模与控制场景实例:他励直流电机的起动与制动过程仿真

直流电机在工业控制、电动车辆、自动化设备中广泛应用。其中,他励直流电机(Separately Excited DC Motor)因其励磁绕组与电枢绕组分别供电,具有良好的调速性能和启动特性,常用于需要平稳启动和精确控制的场合。在实际应用中,电机的启动过程和制动过程对电网、机械系统以及电机本身都具有重要影响。因此,仿真分析他励直流电机的启动与制动特性,是电机控制设计的重要环节。本文将详细介绍如何使用构建一个他励直流电机的启动与制动过程仿真模型,并通过仿真分析其动态响应。本文详细介绍了如何使用构建一个。

xiaoheshang_123的博客 227

Figma 设计稿转前端代码:Cursor 实现 UI 还原的 4 种精准映射方法

揭示 Figma 设计稿转前端代码失效的根本原因在于四层语义未对齐(像素→布局、视觉→样式、交互→行为、意图→架构),提出以语义标注为核心的结构化喂数据方法,详解通过图层命名、Description 字段和 Markdown 上下文锚点实现高精度 React 组件生成,并给出可落地的避坑指南与实测提

weixin_42545292的博客 138

《架构师》期刊摘要(2016年)二

一、     1、分层架构     分层架构是最常用的架构,也被称为n层架构;多年来,许多企业和公司都在他们的项目中使用这种架构,它已经几乎称为事实标准,因此被大多数架构师、开发者、软件设计者所熟知。     分层架构中的核心概念是管理依赖。如果我们使用依赖倒置原则和测试驱动开发(Test Driven Development),我们的架构会有更好的健壮性。因为,我们要保证所有可能的用例...

深入一点 467

【Unity 实用工具篇】✨| 使用Fungus插件制作一个对话系统,简单好学易上手

今天带来的是Unity中一款简单易用的对话插件Fungus,它是一个免费的交互式的对话系统。 Fungus是Unity免费的一款开源的插件,它可以无代码的实现玩家与NPC之间的对话,并且支持本地化,对相机、Sprite及音乐音效的控制。 学会使用该插件就可以做一些对话剧情类的游戏了,还是非常好用的,下面就来学习一下Fungus具体怎么使用吧!

努力前行,总会成为自己心中的那道光 1万+

《架构师》期刊摘要(2016年)三

一、我对架构师职责定义如下:     1)以工程思维全面理解业务需求     2)基于模型和基础模式抽象简化     3)提出恰当可行的整体解决方案     4)在限定资源范围完成明确目标     5)满足业务需求且保证系统质量          架构师的责任心很重要,因为架构方面工作往往处于重要但不紧急的尴尬境地,如果架构师在这方面自己不重视,那还怎么能做好呢?当然,要是只关注技...

深入一点 245

AgentScope Java 2.0 最佳实践:9 个完整示例手把手带你开发 Java‑Agent

本文基于9 个完整示例,深入剖析从基础对话(BasicChatExample)、工具调用(@Tool 注解)、结构化输出(POJO Schema)、ToolGroup 自主管理、MCP 外部工具集成、Hook 生命周期监控、Spring Boot SSE 流式 Web、JsonSession 会话持久化到中断恢复的全链路实战教程。

program哲学 1626

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

中科院计算所培训中心2016年三季度课程安排

2016年三季度,我们设立了以下课程,诚邀各企事业单位及有志之士积极参与。  三季度课程安排:   序号 课程名称 课程时间 地点 1 【数据仓库与数据挖掘】 7月6日-7月8日 北京 2 【高级系统架构师】 7月6日-7月8日 北京

中科院计算所培训中心 759

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

BDTC 2016 出品人阵容曝光!附首批邀请嘉宾名单

2016年12月8日-10日,由中国计算机学会(CCF)主办,CCF大数据专家委员会承办,中国科学院计算技术研究所和优快云共同协办的2016中国大数据技术大会(Big Data Technology Conference 2016,BDTC 2016)将在北京新云南皇冠假日酒店隆重举办。 中国大数据技术大会(BDTC)的前身是Hadoop中国云计算大会(Hadoop in China,Hi...

AI早餐汇 1673

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

2016年四季度公开课安排

一、 四季度课程安排:   序号 课程名称 课程时间 地点 费用 1 【大数据处理技术-基于Hadoop/Yarn的实战(含Spark、Storm和Docker应用介绍 】 10月13日-10月15日 北京 5500 2 【软件重构与软件设计模式】

中科院计算所培训中心 917

历年Infoq架构师月刊收集

Infoq月刊收集: 2008:https://download.youkuaiyun.com/download/chenxuegui123/11952622 2009:https://download.youkuaiyun.com/download/chenxuegui123/11952623 2010:https://download.youkuaiyun.com/download/chenxuegui123/119...

永生只是一场幻梦 776

国内GeoGebra论文

为什么80%的码农都做不了架构师?>>> ...

weixin_34281477的博客 1615

视频教程-2020年软考系统架构设计师-上午历年真题解析视频培训课程-软考

2020年软考系统架构设计师-上午历年真题解析视频培训课程 河北师范大学软件...

weixin_31233223的博客 867

无开源,不 AI!

2012 年,深度学习模型 ImageNet 算法带来了第三次 AI 浪潮。自此,已深耕深度学习领域几十载的 AI 研究学者与科学家成为 AI 时代的缔造者。2016 年,AlphaGo...

优快云资讯 2513

精英云集,看国内外12家顶级公司大数据实践

2016年12月8日-10日,BDTC 2016 中国大数据技术大会将在北京新云南皇冠假日酒店隆重举办。本届BDTC 2016为期三天,聚焦行业最佳实践,数据与应用的深度融合,关注热门技术在行业中的实践和应用,除Keynote外,主办方精心策划了16场专题技术和行业论坛,涵盖了大数据分析与生态系统、大数据云服务、HPC大数据、推荐系统、数据安全与隐私保护、人工智能、网络与通讯、政策法规与标准化、工...

imgxr的博客 2795

10年IT老兵给新人程序员的几点建议

【优快云 编者按】对于很多计算机专业的同学而言,“进大厂”已经成为毕业后职业道路的首选。但是面试官最喜欢什么样的应届生你知道吗?在校期间应该为找工作做哪些准备?除了技术好,在职场中还有哪...

优快云资讯 5034
上一篇: Flume + kafka + HDFS构建日志采集系统
下一篇: 《架构师》期刊摘要(2016年)二
iteye_19607
博客等级 码龄8年 34粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值