代码编织梦想

1 系统架构演变

随着网站应用的规模不断的扩大,进而导致系统架构也在不断的进行变化。

从互联网早期到现在,系统架构大体经历了下面几个过程:

单体应用架构—>垂直应用架构—>分布式架构—>SOA架构—>微服务架构,当然还有悄然兴起的Service Mesh(服务网格化)。

1.1 单体应用架构

单体应用架构一般应用于的网站应用流量较小,只需一个应用,将所有功能代码都部署在一起就可以,这样可以减少开发、部署和维护的成本。

结构图:
  比如说一个电商系统,里面会包含很多用户管理,商品管理,订单管理,物流管理等等很多模块, 我们会把它们做成一个web项目,然后部署到一台tomcat服务器上。
在这里插入图片描述优点:

  • 项目架构简单,小型项目的话,开发成本低。
  • 项目部署在一个节点上,维护方便

缺点:

  • 全部功能集成在一个工程中,对于大型项目来讲不易开发和维护。
  • 项目模块之间紧密耦合,单点容错率低(一个模块出现错误项目无法正常运行
  • 无法针对不同模块进行针对性优化和水平扩展

1.2 垂直应用架构

以上面的电商为例子, 用户访问量的增加可能影响的只是用户和订单模块, 但是对消息模块的影响就比较小. 那么此时我们希望只多增加几个订单模块, 而不增加消息模块. 此时单体应用就做不到了, 垂直应用就应运而生了.

垂直应用架构,就是将原来的一个应用拆成互不相干的几个应用,以提升效率。
比如我们可 以将上面电商的单体应用拆分成:
  电商系统(用户管理 商品管理 订单管理)
  后台系统(用户管理 订单管理 客户管理)
  CMS系统(广告管理 营销管理)
这样拆分完毕之后,一旦用户访问量变大,只需要增加电商系统的节点就可以了,而无需增加后台和CMS的节点。

结构图:
在这里插入图片描述
优点:

  • 系统拆分实现了流量分担,解决了并发问题,可以针对不同模块进行优化和水平扩展
  • 一个系统的问题不会影响到其他系统,提高容错率

缺点:

  • 系统之间相互独立, 无法进行相互调用
  • 系统之间相互独立, 会有重复的开发任务

1.3 分布式架构

当垂直应用越来越多,重复的业务代码就会越来越多。考虑将重复的代码抽取出来,做成统一的业务层作为独立的服务,然后由前端控制层调用不同的业务层服务进行,这就产生了新的分布式系统架构。

分布式系统架构。它将把工程拆分成表现层和服务层两个部分,服务层中包含业务逻辑。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。

结构图:
在这里插入图片描述
优点:

  • 抽取公共的功能为服务层,提高代码复用性

缺点:

  • 系统间耦合度变高,调用关系错综复杂,难以维护

1.4 SOA架构 – 阿里

在分布式架构下,当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心对集群进行实时管理,由此阿里开发了SOA架构。

SOA架构中用于资源调度和治理中心(SOA Service Oriented Architecture,面向服务的架构)是关键。

结构图:
在这里插入图片描述优点:

  • 使用注册中心解决了服务间调用关系的自动调节

缺点:

  • 服务间会有依赖关系,一旦某个环节出错会影响较大( 服务雪崩 )
  • 服务关心复杂,运维、测试部署困难

1.5 微服务架构

在某种程度上是面向服务的架构SOA继续发展的下一步,它更加强调服务的"彻底拆分"---->必须要springboot(独立的系统)

结构图:
在这里插入图片描述
优点:

  • 服务原子化拆分,独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展
  • 微服务之间采用Restful等轻量级http协议相互调用

缺点:

  • 微服务系统开发的技术成本高《高》(容错、分布式事务等)
  • 小型项目不适合使用微服务架构

2 微服务架构介绍

  微服务架构, 简单的说就是将单体应用进一步拆分,拆分成更小的服务,每个服务都是一个可以独立运行的项目。

2.1 微服务架构的常见概念

2.1.1 服务治理

服务治理就是进行服务的自动化管理,其核心是服务的自动注册与发现。

服务注册:服务实例将自身服务信息注册到注册中心。

服务发现:服务实例通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提供的服务。

服务剔除:服务注册中心将出问题的服务自动剔除到可用列表之外,使其不会被调用到。

在这里插入图片描述

2.1.2 服务调用

微服务架构中,通常存在多个服务之间的远程调用的需求。目前主流的远程调用技术有基于HTTP的RESTful接口以及基于TCP的RPC协议

REST(Representational State Transfer)

这是一种HTTP调用的格式,更标准,更通用,无论哪种语言都支持http协议。

RPC(Remote Promote Call)

Rpc @Autowire Bservice bservice.方法()

一种进程间通信方式。允许像调用本地服务一样调用远程服务。RPC框架的主要目标就是让远程服务调用更简单、透明。RPC框架负责屏蔽底层的传输方式、序列化方式和通信细节。开发人员在使用的时候只需要了解谁在什么位置提供了什么样的远程服务接口即可,并不需要关心底层通信细节和调用过程。

在这里插入图片描述在这里插入图片描述

2.1.3 服务网关

随着微服务的不断增多,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信可能出现:

  • 客户端需要调用不同的url地址,增加难度
  • 在一定的场景下,存在跨域请求的问题
  • 每个微服务都需要进行单独的身份认证

针对这些问题,API网关顺势而生。
API网关直面意思是将所有API调用统一接入到API网关层,由网关层统一接入和输出。一个网关的基本功能有:统一接入、安全防护、协议适配、流量管控、长短链接支持、容错能力。有了网关之后,各个API服务提供团队可以专注于自己的的业务逻辑处理,而API网关更专注于安全、流量、路由等问题。
在这里插入图片描述

2.1.4 服务容错

在微服务当中,一个请求经常会涉及到调用几个服务,如果其中某个服务不可用,没有做服务容错的话,极有可能会造成一连串的服务不可用,这就是雪崩效应。
我们没法预防雪崩效应的发生,只能尽可能去做好容错。服务容错的三个核心思想是:

  • 不被外界环境影响
  • 不被上游请求压垮
  • 不被下游响应拖垮
    在这里插入图片描述

2.1.5 链路追踪

  随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要对一次请求涉及的多个服务链路进行日志记录,性能监控即链路追踪。
在这里插入图片描述

2.2 微服务架构的常见问题

一旦采用微服务系统架构,就势必会遇到这样几个问题:

  • 这么多小服务,如何管理他们?
  • 这么多小服务,他们之间如何通讯?
  • 这么多小服务,客户端怎么访问他们?
  • 这么多小服务,一旦出现问题了,应该如何自处理?
  • 这么多小服务,一旦出现问题了,应该如何排错?
    对于上面的问题,是任何一个微服务设计者都不能绕过去的,因此大部分的微服务产品都针对每一个问题提供了相应的组件来解决它们。

在这里插入图片描述

2.3 微服务架构使用的组件架构

2.3.1 ServiceComb

在这里插入图片描述  Apache ServiceComb,前身是华为云的微服务引擎 CSE (Cloud Service Engine) 云服务,是全球首个Apache微服务顶级项目。它提供了一站式的微服务开源解决方案,致力于帮助企业、用户和开发者将企业应用轻松微服务化上云,并实现对微服务应用的高效运维管理.

2.3.2 1.2.3.1SpringCloud (springcloud 很多组件都是拿的是Netflix公司,这家公司这些组件停止维护和更新。)在这里插入图片描述

Spring Cloud是一系列框架的集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
已经停更了。Euruka(注册中),feign远程调用,hystrix 容错,zuul网关

2.3.2 SpringCloud Alibaba(引入springcloud很多组件都更新了。)在这里插入图片描述

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

2.4 SpringCloud Alibaba介绍

  Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

  依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

2.4.1 主要功能

服务限流降级:默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud,Gateway, Zuul, Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。

服务注册与发现:适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。

分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。

消息驱动能力:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。

分布式事务:使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。

阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。

分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有Worker(schedulerx-client)上执行。

阿里云短信服务:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

2.4.2 组件

Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。

Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。

Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。

Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

Alibaba Cloud SchedulerX: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。

Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_53312145/article/details/117229655

从零到一搭建nacos微服务(一)-爱代码爱编程

从零到一搭建nacos微服务(一) 为什么要用nacos做微服务?一.搭建方式外部数据库支持二.配置方式传统配置请求配置中心做配置如何从nacos获取配置 为什么要用nacos做微服务? 官网的说明: Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。

两个server 两个数据库 微服务_微服务模式:一个服务一个数据库-爱代码爱编程

背景 我们假设你正在使用微服务架构来开发一个在线商城应用。大多数服务需要用某种数据库来持久化数据,如:订单服务存储关于订单的数据,客户服务存储客户相关的数据。 问题 微服务中数据库架构是什么样的? 限制服务之间必须松耦合,以使得每个服务可以独立开发、部署和扩展 一些业务事务必须保障跨多个服务的业务不变量。比如,下单这个用例将会验证新订单是

创建微服务架构的步骤_如何快速搭建一个微服务架构?-爱代码爱编程

原标题:如何快速搭建一个微服务架构? 微服务火了很久,但网上很少有文章能做到成熟地将技术传播出来,同时完美地照顾“初入微服务领域人员”,从 0 开始,采用通俗易懂的语言去讲解微服务架构的系列。所以,我们策划了这篇文章。本文转载自 InfoQ 垂直号「聊聊架构」。 记得好久之前看到一个大牛说过:如果单体架构都搞不好,就别搞微服务架构。乍一看,这句很有

微服务 & 微服务架构(一)-爱代码爱编程

单体架构 VS 微服务架构 单体架构 一个工程对应一个归档包(war),这个war包 包含了该工程的所有功能。我们成为这种应用为单体应用,也就是我们常说的单体架构(一个war包打天下)。具体描述: 就是在我们的一个war包种,聚集了各种功能以及资源,比如JSPJS,CSS等。而业务种包含了我们的用户模块,订单模块,支付模块等一系列项目所需模块! 单体

java微服务有导出来_idea2020中复制一个微服务实例的方法-爱代码爱编程

推荐阅读: 由于在开发过程中,如果需要调用多个服务提供者,就只能一个一个创建,对于两个功能相同的服务提供者可以使用创建其”分身“,达到快速测试的目的。 首先,创建好一个服务提供者微服务(ServerProviderApp 端口:8000) 开始创建“分身”。 1. 在idea2020中 打开 顶部标签View-> Tool Windows

php调用go微服务,基于go搭建微服务实践教程 (一)-爱代码爱编程

概览 下面这张图就是我们将要搭建的项目的概览图。我们将开始写第一个微服务之后我们会一点点完成这张图的所有内容。 讲解: 白色虚线的方框内: docker swarm集群,运行在一个或多个节点上。 蓝色方框内: Spring cloud/Netflix OSS提供的支持系统,或者其他服务,比如zipkin 黄色方框/白色方框: 一个微服务。

微服务秒杀系统(一)项目介绍-爱代码爱编程

秒杀,当看到这两个字的时候大部分学Java的同学应该都会想:这个我熟啊。没错,大部分同学都会做过秒杀的项目,也会写在简历上,但是面试官往往会来一句:又是秒杀(内心OS:烂大街的东西),你这个和别人有啥不一样?然后开始吧啦吧啦吧啦吧啦 既然已经烂大街,那为什么还要用这个呢?可是不用这个又能用什么呢?就像我们写论文,发明一个新算法那是几乎不可能的事,那怎么办

微服务网关Gateway基本知识(一)-爱代码爱编程

1、Spring Cloud GateWay 基本知识 网关作为流量的入口,常用的功能包括路由转发,权限校验,限流等。 Spring Cloud GateWay是Cloud官方推出的第二代网关框架,定位取代NetFilx Zuul,与Zuul相比较,Gateway能提供更优秀的性能,更强大的功能。 Gateway是基于WebFlux+Netty+Reac

微服务技术栈介绍-爱代码爱编程

微服务项目技术栈服务开发SpringBoot,Spring,SpringMVC服务配置与管理Netflix公司的Archaius、阿里的Diamond等服务注册与发现Eureka,Consul,Zookeeper等服务调用Rest、RPC、gRPC服务熔断器Hystrix、Envoy等负载均衡Ribbon、Nginx等服务接口调用Feign等消息队列Kaf

微服务架构介绍-爱代码爱编程

文章目录 微服务架构微服务发展史单体架构集群及垂直化SOA架构微服务架构微服务架构的优缺点优点缺点参考文献 微服务架构 微服务发展史 单体架构 任何一个理论或者技术的出现往往是伴随着现实中出现了相应的问题,而产生的的一系列解决办法。往往在项目初期业务并不是很复杂、用户量不是很大,单体架构完全符合当时的需求,所以在项目初期是都是从单体架构进

聊一聊微服务之间的通讯方式-爱代码爱编程

介绍 同步通讯与异步通讯属于微服务调间用的两种方式,其两种方式会应用于不同的场景,使用的合理可以是系统性能翻倍增长。 同步 同步调用是在某个服务调用后,会之间调用其他服务,在此之间会之间等待所以的服务完成调用,这几就是同步调用。 缺点 耦合性 有一个很神奇的生物,叫做产品经理,经常脑洞大开。有时候开发人员觉得,已经开发完了没有问题了,但这个是产

架构演进及微服务架构介绍-爱代码爱编程

总述 近年来,微服务架构一直是互联网技术圈的热点之一,越来越多的互联网应用都采用了微服务架构作为系统构建的基础,很多新技术和观念如Docker、Kubernetes、DevOps、持续交付、Service Mesh等也都在关注、支持、和跟随微服务架构的发展。 接下来,会概要的介绍微服务架构:包括微服务架构是如何演进的,微服务架构的主要流派,当前主流的云原

微服务简单介绍-爱代码爱编程

一、概念 微服务:一个单体应用分成多个小的功能单位。 1、优点: (1)单体架构的代码过于集中臃肿,微服务化之后代码复杂性减少,逻辑结构更加清晰(结构本身的优点) (2)单体服务的部署速度较慢,微服务化之后部署速度更快(对技术人员而言) (3)单体的灵活性差,资源很难按需伸缩。微服务的灵活性更强,更加适合云计算架构 总结:微服务的目的就是有效的

史诗级鸿篇巨著微服务架构之微服务介绍-爱代码爱编程

微服务架构认知 欢迎大家和小编一起探讨学习史诗级鸿篇巨著,微服务架构第一章——微服务架构介绍,在本文中主要和大家介绍一下微服务架构的理念,让大家对微服务有个比较直观的认识,在介绍本次微服务系列之前,先来给大家做个剧透,看看我们整篇系列文章要介绍的内容。 微服务介绍SpringCloud在微服务的整个体系当中,它包含了许许多多的组件,比如: 服务治理—

微服务注册中心-nacos介绍-爱代码爱编程

一、背景         最近公司使用了nacos作为注册中心,就了解了一下,Nacos 主要作用是发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 二、愿景         Nacos 通过提供简单易用的动态服务发现、服务配置、服务共享与管理等服务基础设施,帮助用户在云原生