应用架构

阿里云专家详解 2020 服务网格发展趋势

≯℡__Kan透↙ 提交于 2020-04-08 10:54:10
作者 | 王夕宁 阿里巴巴高级技术专家 关注“阿里巴巴云原生”公众号,参与文末留言互动,即有机会获得赠书福利! 本文摘自于由阿里云高级技术专家王夕宁撰写的《Istio 服务网格技术解析与实践》一书,文章从基础概念入手,介绍了什么是服务网格及 Istio,针对 2020 服务网格的三大发展趋势,体系化、全方位地介绍了 Istio 服务网格的相关知识。 你只需开心参与公众号文末互动,我们负责买单!技术人必备书籍《Istio 服务网格技术解析与实践》免费领~ 有 外文 指出,2020 年 Service Mesh 技术将有以下三大发展: 快速增长的服务网格需求; Istio 很难被打败,很可能成为服务网格技术的事实标准; 出现更多的服务网格用例,WebAssembly 将带来新的可能。 什么是服务网格 Gartner 2018 关于服务网格技术趋势分析报告,展示了一系列的服务网格技术,划分服务网格技术的依据是基于应用服务代码是否必须对其服务网格感知及其是否锁定,或锁定的程度。 基于编程框架的网格技术可以帮助开发人员构建一个架构体系良好的服务,但这会导致应用代码与框架和运行时环境的紧密耦合。而基于 Sidecar 代理的服务网格技术不会为开发人员设置这些障碍,并且使其管理和维护更加轻松,能够提供更灵活的方法来配置运行时策略。 在微服务环境中,可将单一应用程序分解为独立的多个组件

微服务架构设计模式

孤街醉人 提交于 2020-04-05 18:36:59
目录 什么是微服务模式 单体结构的历程 单体地狱的银弹-微服务架构 扩展立方体和服务 微服务架构的好处和弊端 优点 大型的复杂应用程序可以持续交付和持续部署 每个服务都相对较小并容易维护 更好的容错性 更容易实验和采纳新的技术 弊端 服务的拆分和定义是一项挑战 分布式系统带来的各种复杂性 开发者需要思考到底应该在应用的什么阶段使用微服务架构 服务的拆分策略 识别系统操作 创建抽象领域模型 定义系统操作 根据业务能力进行服务拆分 从业务能力到服务 根据子域进行服务拆分 上帝类的处理 什么是微服务模式 随着网络基础设施的高速发展,以及越来越多的个体接入互联网,在考虑构建支持海量请求以及多变业务的软件平台时,微服务架构成为多数人的首选。微服务架构的出现时服务事物发展规律的:当问题足够大,有足够多的的不确定因素时,人们习惯于把大的问题拆分成小的问题。通过分割,抽象和重用小而可靠的功能模块来构建整体方案。但是当这些小的,可重用的部分多来越多的时候,又会出现新的问题。再相似的阶段,人们遇到的问题也是相似的,这个时候人们需要一些共识,需要用一些通用的词汇来描述问题以及解决方案,这也是人们知识的总结,微服务模式就是这样的总结和概括,是一种可以通用的共识,用于描述微服务领域的中的问题及解决方案。 单体结构的历程 在企业发展的初期,应用程序相对较小,所有的代码运行在一个应用程序中有以下好处

IT基础架构规划方案一(网络系统规划)

China☆狼群 提交于 2020-04-02 19:35:57
背景 某集团经过多年的经营,公司业务和规模在不断发展,公司管理层和IT部门也认识到通过信息化手段可以更好地支撑公司业务运营、提高企业生产和管理效率。同时随着新建办公大楼、研发大楼和厂房的落成,IT部门也需要对整个集团的信息化和企业IT基础架构进行规划和建设。目前主要分为以下两部分: 楼宇智能化规划和建设方案:主要包括视频监控、门禁系统、语音和数据节点规划和布线、CATV、大屏幕电子显示屏、机房建设等。 企业IT基础架构规划和解决方案:主要包括企业局域网基础网络拓扑规划和网络设备选型、互联网接入和VPN接入、IT硬件部署和选型、企业IT信息化基础软件系统规划和选型等。 本方案主要是针对某集团企业IT基础架构进行规划,并提出解决方案和进行投资预算。而关于楼宇智能化规划和建设的方案参见其它相关方案。 企业IT架构 一般企业的IT架构情况,本方案主要针对IT基础架构部分进行规划,并提供选型和部署参考,关于企业IT业务应用系统部分的规划和建设请参考其它方案。 网络系统规划 当前,企业一般能给信息化方面投入有限。除了人力有限,还缺少专业人才,应用能力、维护能力、开发能力、实施能力等都普遍较弱,这就要求网络架构成熟、稳定安全、高可靠、高可用,尽可能少投入人力和金钱进行维护。其次,由于企业首要解决的是生存问题,根本没办法做到“先信息化,再做业务”,因此网络建设实施要求必须容易,实施时间必须极短。

Node.js微服务实践(一)

三世轮回 提交于 2020-03-30 06:47:19
什么是微服务 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。 微服务的概念源于2014年3月Martin Fowler所写的一篇文章“Microservices”( http://martinfowler.com/articles/microservices.html )。 尽管“微服务”这种架构风格没有精确的定义,但其具有一些共同的特性,如围绕业务能力组织服务、自动化部署、智能端点、对语言及数据的“去集中化”控制等等。微服务架构的思考是从与整体应用对比而产生的。 通常,在一家公司随着业务需求的增长为逐步发展(自然增长)的过程中,前期往往是以单块架构的方式来组织系统的。因为对于软件的初期构建来说,单块架构的方式是最容易且最高效的。但是若干年(甚至是几个月)后,受限于前期既有单块软件系统内部耦合性,再向该系统加新功能变得越来越艰难。 单块软件 企业应用,因为服务于众多业务需求,因此会有些特定的软件应用提供许多功能,而一般惯例是把这些功能都堆在单个单片应用中。例如,ERP,CRM和其他各种软件系统被规划构建为具有数百个功能的整体。这种带坑应用一经部署,在往后的故障排除、扩展和升级场景中就是一场接一场的恶梦了。

软件体系架构阅读笔记三

爷,独闯天下 提交于 2020-03-28 11:53:03
单体架构比较初级,典型的三级架构,前端(Web/手机端)+中间业务逻辑层+数据库层。这是一种典型的Java Spring mvc或者Python Drango框架的应用。 单体架构的应用比较容易部署、测试, 在项目的初期,单体应用可以很好地运行。然而,随着需求的不断增加, 越来越多的人加入开发团队,代码库也在飞速地膨胀。慢慢地,单体应用变得越来越臃肿,可维护性、灵活性逐渐降低,维护成本越来越高。 下面是单体架构应用的一些缺点: 复杂性高 : 以一个百万行级别的单体应用为例,整个项目包含的模块非常多、模块的边界模糊、 依赖关系不清晰、 代码质量参差不齐、 混乱地堆砌在一起。可想而知整个项目非常复杂。 每次修改代码都心惊胆战, 甚至添加一个简单的功能, 或者修改一个Bug都会带来隐含的缺陷。 技术债务 : 随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务, 并且越积 越多。“ 不坏不修”, 这在软件开发中非常常见, 在单体应用中这种思想更甚。 已使用的系统设计或代码难以被修改,因为应用程序中的其他模块可能会以意料之外的方式使用它。 部署频率低 : 随着代码的增多,构建和部署的时间也会增加。而在单体应用中, 每次功能的变更或缺陷的修复都会导致需要重新部署整个应用。全量部署的方式耗时长、 影响范围大、 风险高, 这使得单体应用项目上线部署的频率较低。

全网最全微服务架构—Spring Cloud详解,没有比这更详细的了!

懵懂的女人 提交于 2020-03-26 22:51:24
软件是有生命的,你做出来的架构决定了这个软件它这一生是坎坷还是幸福。 本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义。 一、背景 2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去”能用就行”这种很low的档次了,像 抢红包、双十一这样的活动 不断逼迫我们去突破软件系统的性能上限,传统的IT企业”能用就行”的开发思想已经不能满足互联网 高并发、大流量的性能要求 。系统架构 走向分布式 已经是服务器开发领域解决该问题唯一的出路,然而分布式系统由于天生的复杂度,并不像开发单体应用一样把框架一堆就能搞定,因此各大互联网公司都在投入技术力量研发自己的基础设施。这里面比较有名的如 阿里的开源项目dubbo, Netflix开发的一系列服务框架 。在这种“百花齐放”、重复造轮子的状况下,必然要出现一种统一的标准来简化分布式系统的开发, Spring Cloud 应运而生。 二、Spring Cloud是什么 Spring Cloud是一系列框架的有序集合 。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如 服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控 等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子

基于三维GIS平台的智慧园区建设方案

我是研究僧i 提交于 2020-03-25 17:16:16
随着Web3. 0在城市生活应用中的不断深入,智慧城市建设也在不断深入的发展,智慧园区作为智慧城市重要组成部分,存在着建设内容多、周期长,运用存在延续性、技术不断的更新性,而且在建设的过程中涉及到的人员多与投资规模大等特征,需要将智慧停车、餐饮、安防、信息发布、环境监控等融合在一体,并能为用户提供个性化的支持服务,这就需要对智慧园区的建设做好整体规划与设计。 1智慧园区建设的系统架构分析 基于 三维GIS 平台的智慧园区建设主要目标是为用户提供高效、便捷、舒适、生态和谐的居住环境,通过以感知技术为核心智慧化途径来获取园区的管理信息,并以智慧化的管理支撑平台整合各种信息,实现园区内的信息互联互通,为用户提供全方位的信息化支持服务,从而实现园区的全面感知与智能管理,结合智慧园区建设的需要,智慧园区系统主要包括基础设施层、平台管理层、应用层与展示层等几个方面,具体的系统架构如下图所示。 在系统设计中按照“以人为本”的原则,从智慧园区中的不同人员需求出发与系统的功能规划,以及各个场景中的不同应用,认真的规划各种场景结构,综合智慧园区的共性服务与需求,建设个性化、智慧化的智慧园区,采用物联网技术、SOA技术、云计算技术、网络安全技术、无线网络技术、传感感知技术、VR/AR、AI、数据挖掘技术、应用控制等各种主流技术,在适应智慧园区当前建设的需要同时,还要能够满足未来功能拓展的需求。 1

应对突发需求,如何借助Serverless快速上云?

浪子不回头ぞ 提交于 2020-03-25 12:00:31
3 月,跳不动了?>>> 当突发事件来临时,当绝佳idea闪现时,如何快速搞定开发和部署,使之变身为产品?快,则应万变!Serverless 是当今炙手可热的技术,被认为是云计算发展的未来方向,如何利用Serverless Framework 实现快速上云?本文是王俊杰老师在「云加社区沙龙online」的分享整理,详细阐述了Serverless上云的基本思路、框架原理、组件架构等,带大家揭开Serverless的神秘面纱。 应对突发需求,如何借助Serverless快速上云?_腾讯视频 ​ 一、Serverless上云基本概念 感谢云加社区组织这次“技术应变力”的线上专题活动,并邀请我来进行分享,我将从Serverless的角度来进行解读。Serverless是最近非常热门的词,中文翻译为“无服务器”。有人认为既然是无服务器,就意味着不再需要运维,完全是按需付费的模式...... 其实这些理解都比较片面,描述的都只是Serverless的某个方面。 从2014~2020年,这几年Serverless关键词的谷歌搜索指数与日攀升,现在已经成为了非常火爆的技术名词。其实早在2006年就有人提出Pay as you go的概念,需要多少就买多少,但直到2012年,Serverless首次被提出。2014~2016年,大型云厂商纷纷发布函数计算相关的产品支撑这样一个无服务器技术。

Springcloud微服务架构

早过忘川 提交于 2020-03-23 08:55:12
什么是微服务 微服务的概念源于2014年3月Martin Fowler所写的一篇文章“Microservices”。 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。 微服务架构优势 复杂度可控:在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。 独立部署:由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效

架构基本概念和架构本质

浪尽此生 提交于 2020-03-22 17:26:59
CSDN看到一篇介绍架构设计的博客,内容提纲挈领,内容丰富。依据原文整理,加上自己的理解和总结。 推荐给大家。点击原文可以查看出处。 原文链接: https://blog.csdn.net/hguisu/article/details/78258430 什么是架构和架构本质 在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟通起来自然不顺畅。 Linux有架构,MySQL有架构,JVM也有架构,使用Java开发、MySQL存储、跑在Linux上的业务系统也有架构,应该关注哪一个? 想要清楚以上问题需要梳理几个有关系又相似的概念:系统与子系统、模块与组建、框架与架构: 区分系统、模块、组件、框架和架构 S君: 区分系统、模块、组件、框架和架构 系统(system)和子系统:有 关联 的个体,根据某种 规则 运行,共同完成独特的 功能 。子系统:系统的组成部分。 模块(module)和组件(component):模块和组件都是系统的组成部分,只是从不同角度拆分系统而已。 从逻辑角度拆分得到的是模块,从物理角度拆分得到的是组件。 模块是为了实现职责分离, 组件是为了实现复用。 框架