深圳网站建设ppchsj,什么网站可以做进出口买卖,wordpress完全开源吗,做网站需要注册公司吗系统架构的演变 1、技术架构发展历史时间轴 ①单机垂直拆分#xff1a;应用间进行了解耦#xff0c;系统容错提高了#xff0c;也解决了独立应用发布的问题#xff0c;存在单机计算能力瓶颈。 ②集群化负载均衡可有效解决单机情况下并发量不足瓶颈。 ③服务改造架构 虽然系…系统架构的演变 1、技术架构发展历史时间轴 ①单机垂直拆分应用间进行了解耦系统容错提高了也解决了独立应用发布的问题存在单机计算能力瓶颈。 ②集群化负载均衡可有效解决单机情况下并发量不足瓶颈。 ③服务改造架构 虽然系统经过了垂直拆分但是拆分之后发现有重复的功能比如用户注册、发邮件等等一旦项目大了集群部署多了这些重复的功能无疑会造成资源浪费所以会把重复功能抽取出来名字叫XX服务Service。为了解决服务跟服务如何相互调用需要一个程序之间的通信协议所以就有了远程过程调用RPC作用就是让服务之间的程序调用变得像本地调用一样的简单。 优点在垂直架构的基础上解决了业务重用的问题。 ④服务治理 随着业务的增大基础服务越来越多调用网的关系由最初的几个增加到几十上百造成了调用链路错综复杂需要对服务进行治理。服务治理要求当服务节点数几十上百的时候需要对服务有动态的感知引入了注册中心。当服务链路调用很长的时候如何实现链路的监控。单个服务的异常如何能避免整条链路的异常雪崩需要考虑熔断、降级、限流。服务高可用负载均衡。典型框架比如有Dubbo默认采用的是Zookeeper作为注册中心。 ⑤微服务时代 微服务是在2012年提出的概念微服务的希望的重点是一个服务只负责一 个独立的功能。 拆分原则任何一个需求不会因为发布或者维护而影响到不相关的服务 一切可以做到独立部署运维。 比如传统的“用户中心”服务对于微服务来说需要根据业务再次拆分可 能需要拆分成“买家服务”、“卖家服务”、“商家服务”等。 典型代表Spring Cloud相对于传统分布式架构SpringCloud使用的是 HTTP作为RPC远程调用配合上注册中心Eureka和API网关Zuul可以做到细 分内部服务的同时又可以对外暴露统一的接口让外部对系统内部架构无感 此外Spring Cloud的config组件还可以把配置统一管理。 Spring Cloud微服务架构存在的不足 Spring Cloud属于侵入式框架在项目中需要添加spring cloud maven 依赖加上spring cloud组件注解写配置打成jar的时候还必须要把非业务的代码也要融合在一起。 微服务中的服务支持不同语言开发也需要维护不同语言和非业务代码 的成本 业务代码开发者应该把更多的精力投入到业务熟悉度上而不应该是非 业务上Spring Cloud虽然能解决微服务领域的很多问题但是学习成本还是较大的。 互联网公司产品的版本升级是非常频繁的为了维护各个版本的兼容 性、权限、流量等因为Spring Cloud是“代码侵入式的框架”这时候 版本的升级就注定要让非业务代码一起一旦出现问题再加上多语言之间的调用工程师会非常痛苦。 我们已经感觉到了服务拆分的越细只是感觉上轻量级解耦了但是维护成本却越高了。 ⑥服务网格新时期 Service Mesh Service Mesh主要解决的问题就希望开发人员对于业务的聚焦服务发 现、服务注册、负载均衡等对于开发人员透明可以更加专注业务逻辑的实 现。 如果将为微服务提供通信服务的这部分逻辑从应用程序进程中抽取出来 作为一个单独的进程进行部署并将其作为服务间的通信代理可以得到如下 图所示的架构 当服务大量部署时随着服务部署的Sidecar代理之间的连接形成了一个如下图所示的网格该网格成为了微服务的通讯基础设施层承载了微服务之间的所有流量被称之为Service Mesh服务网格。 服务网格中有数量众多的Sidecar代理如果对每个代理分别进行设置工作量将非常巨大。为了更方便地对服务网格中的代理进行统一集中控制在服务网格上增加了控制面组件。 服务网格用来描述组成这些应用程序的微服务网络以及它们之间的交互。随着服务网格的规模和复杂性不断的增长它将会变得越来越难以理解和管理。它的需求包括服务发现、负载均衡、故障恢复、度量和监控等。服务网格通常还有更复杂的运维需求比如 A/B 测试、金丝雀发布、速率限制、访问控制和端到端认证。 Istio 2017年5月24日Google, IBM 和 Lyft 共同发布 Istio 的第一个公开版本(0.1)。Istio为一款开源的为微服务提供服务间连接、管理以及安全保障的平台软件支持运行在Kubernetes、Mesos等容器管理工具但不限于Kubernetes、Mesos其底层依赖于Envoy。Istio提供一种简单的方法实现服务间的负载均衡、服务间认证、监控等功能而且无需应用层代码调整。其控制平面由Pilot、Citadel 和 Galley组成数据平面由Envoy实现通常情况下数据平面代理Envoy以sidecar模式部署使得所有服务间的网络通信均由Envoy实现而Istio的控制平面则负责服务间流量管理、安全通信策略等功能。 istio架构 实际上Istio 就是 Service Mesh 架构的一种实现服务之间的通信比如这里的 Service A 访问 Service B会通过代理默认是 Envoy来进行。而且中间的网络协议支持 HTTP/1.1HTTP/2gRPC 或者 TCP可以说覆盖了主流的通信协议。代理这一层称之为数据平面。控制平面做了进一步的细分分成了 Pilot、Citadel 和 Galley它们的各自功能如下Pilot为 Envoy 提供了服务发现流量管理和智能路由AB 测试、金丝雀发布等以及错误处理超时、重试、熔断功能。Citadel为服务之间提供认证和证书管理可以让服务自动升级成 TLS协议。GalleyGalley 是 Istio 的配置验证、提取、处理和分发组件。它负责将其余的 Istio 组件与从底层平台例如 Kubernetes获取用户配置的细节隔离开来。数据平面会和控制平面通信一方面可以获取需要的服务之间的信息另一方面也可以汇报服务调用的 Metrics 数据。 为什么使用 Istio 通过负载均衡、服务间的身份验证、监控等方法Istio 可以轻松地创建一个已经部署了服务的网络而服务的代码只需很少更改甚至无需更改。通过在整个环境中部署一个特殊的 sidecar 代理为服务添加 Istio 的支持而代理会拦截微服务之间的所有网络通信然后使用其控制平面的功能来配置和管理Istio这包括为 HTTP、gRPC、WebSocket 和 TCP 流量自动负载均衡。通过丰富的路由规则、重试、故障转移和故障注入对流量行为进行细粒度控制。可插拔的策略层和配置 API支持访问控制、速率限制和配额。集群内包括集群的入口和出口所有流量的自动化度量、日志记录和追踪。在具有强大的基于身份验证和授权的集群中实现安全的服务间通信。Istio 为可扩展性而设计可以满足不同的部署需求。 二、架构特点分析 1 单体应用架构ALL IN ONE 单体应用架构应用大部分都是一个WAR包或者JAR包包含前端页面后端三层架构web层service层dao层即将所有的功能模块打包到一起并放在一个web容器中如tomcat运行。 优点 所有功能集成在一个项目工程中项目架构简单前期开发成本低要快速增加新功能或部署发布都比较简单小型项目的首选项目初期是一种比较好的方案。 缺点 对于大型项目不易扩展。 系统性能受限系统性能扩展只能通过扩展集群节点的方式成本高技术栈受限有瓶颈。 2 垂直应用架构 随着用户量越来越多系统的压力也随之增长。当并发访问量提高到一定程度单一应用通过增加机器提高性能的方式瓶颈越来越明显在系统不能支撑当前的用户量后需要将项目按照不同的业务来做拆分拆分为多个子系统系统之间通过Webservice或者HTTP接口来进行交互系统不再那么臃肿了。当其中某一个模块使用的频率比较高就对这个模块进行扩展即多部署几个节点。再加一个Nginx用于负载均衡刚开始还没什么大问题当子系统越来越多的时候每个子系统前面都要加一层负载对运维人员来说工作量就增加了因为要维护的也增多了。 优点 通过垂直拆分可在一定程度上突破原来单体应用的并发访问瓶颈不同的子项目可采用不同的技术技术栈相对丰富。 缺点①随着用户量的增加及系统性能的提升需要拆分的子项目越来越多运维成本大幅度提升。 ②按照业务拆分的子系统各个子系统之间存在重合的服务如用户注册、邮件发送等重复的功能会造成资源浪费需要进一步抽取公共功能作为独立服务。 3 分布式SOA架构 3.1 SOA SOA 全称为 Service-Oriented Architecture即面向服务的架构。它可以根据需求通过网络对松散耦合的粗粒度应用组件(服务)进行分布式部署、组合和使用。一个服务通常以独立的形式存在于操作系统进 程中。 站在功能的角度把业务逻辑抽象成可复用、可组装的服务通过服务的编排实现业务的快速再生目的是把原先固有的业务功能转变为通用的业务服务实现业务逻辑的快速复用。 即SOA 有如下几个特点分布式、可重用、扩展灵活、松耦合。 当垂直应用越来越多应用之间交互不可避免将核心业务抽取出来作为独立的服务逐渐形成稳定的服务中心使前端应用能更快速的响应多变的市场需求 优点 抽取公共的功能为服务,提高开发效率对不同的服务进行集群化部署解决系统压力 基于ESB/DUBBO减少系统耦合。 缺点 抽取服务的粒度较大 服务提供方与调用方接口耦合度较高。 3.2 微服务架构 优点 通过服务的原子化拆分以及微服务的独立打包、部署和升级小团队的交付周期将缩短运维成 本也将大幅度下降 微服务遵循单一原则。微服务之间采用Restful等轻量协议传输。 缺点 微服务过多服务治理成本高不利于系统维护。 分布式系统开发的技术成本高容错、分布式事务等。 3.3 SOA与微服务的关系 SOA Service Oriented Architecture “面向服务的架构”是一种设计方法其中包含多个服 务服务之间通过相互依赖最终提供一系列的功能。一个服务通常以独立的形式存在与操作系统进程中。各个服务之间 通过网络调用。 微服务架构其实和 SOA 架构类似,微服务是在 SOA 上做的升华微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。 这些小应用之间通过服务完成交互和集成。 4 分布式核心知识 1 分布式中的远程调用 在微服务架构中通常存在多个服务之间的远程调用的需求。远程调用通常包含两个部分序列化和通信协议。常见的序列化协议包括json、xml、hession、protobuf、thrift、text、bytes等目前主流的远程调用技术有基于HTTP的RESTful接口以及基于TCP的RPC协议。 1RESTful接口 REST即Representational State Transfer的缩写如果一个架构符合REST原则就称它为RESTful架 构。 资源Resources 所谓资源就是网络上的一个实体或者说是网络上的一个具体信息。它可以是一段文本、一张图 片、一首歌曲、一种服务总之就是一个具体的实在。你可以用一个URI统一资源定位符指向它 每种资