spring-cloud-alibaba微服务实战(一)基础储备

目录

整体架构

1.单体架构 vs微服务架构

主要组件

实战开始

1.什么是nacos?以及nacos安装

2.什么是sentinel?


在开始spring-cloud之旅时,先看一下什么是微服务&微服务架构。

整体架构

这是普遍电商网络的整体架构,可以做下参考

1.单体架构 vs微服务架构

    1.单体架构

一个工程对应一个归档包 war,包含了该工程所有功能,这种应用称之为单体应用也就是单体架构

具体:就是一个war包聚集了各种功能以及资源,比如jsp、js、css等,而业务包含了我们的各种模块

spring-cloud-alibaba微服务实战(一)基础储备_第1张图片

优点:

  • 架构简单明了

  • 开发、测试、部署简单

缺点:

  • 随着业务扩展代码越来越复杂,代码质量参差不齐

  • 部署慢

  • 扩展成本高,比如A模块是一个cpu密集型的模块,涉及大量运算,我们就需要更牛逼的cpu。但是B模块是一个IO密集型模块,涉及大量读写磁盘,那我们就需要更加牛逼的内存以及高效的磁盘,但是我们单体架构上无法针对单个功能模块进行扩展

  • 阻碍了新技术发展,比如web架构模块从struct2迁移到springboot

   2. 微服务以及微服务架构

核心就是把传统的单机应用,根据业务将单机应用拆分为一个个服务,彻底解耦,每个服务都是一个特定的功能,一个服务只做一件事,类似进程,每个服务都能够单独部署甚至可以拥有自己的数据库,这样一个个小服务就是微服务

比如传统的单机电商应用 里面有订单/支付/库存/物流/积分等模块

不拆分非核心业务模块出现了重大bug导致系统内存溢出/导致整个服务宕机,查分之后个个微服务之间不受影响

微服务架构

  • 是一种架构风格,将一个单一应用程序开发为一组小型服务

  • 每个服务运行在自己的进程中

  • 服务之间通过轻量级的通信机制 http rest api

  • 每个服务能够独立的部署

  • 每个服务甚至可以拥有自己的数据库

    微服务强调的是服务的大小和对外提供的单一功能,而微服务架构师是指一个个微服务组合管理起来,对外提供一套完整的服务

主要组件

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

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

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

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

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

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

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

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

主要用到

  1. 注册中心、配置中心 Nacos

  2. 限流 Sentinel

  3. 分布式事务 Seata

  4. 网关 SpringCloud Gateway

  5. 认证授权 Spring Cloud Oauth2

spring-cloud-alibaba微服务实战(一)基础储备_第2张图片

实战开始

1.什么是nacos?以及nacos安装

nacos主要是发现配置和管理微服务,提供了一组简单易用的特性集,快速实现动态服务发现,服务配置、服务元数据及流量管理

帮助我们更敏捷和容易的构建、交付和管理微服务平台

以“服务”为中心的现代应用架构(eg:微服务范式,云原生范式)的服务基础设施

下载地址:[nacos] https://github.com/alibaba/nacos/releases

启动nacos:

  • 下载后解压,打开bin文件夹

    spring-cloud-alibaba微服务实战(一)基础储备_第3张图片

  • sh startup.sh -m standalone //启动后脚本 这里用的是mac系统
  • 登陆http://127.0.0.1:8848/nacos/#/login到web页面 默认端口为8848,默认账号密码均为nacos

  • 此图为nacos的主页面

    spring-cloud-alibaba微服务实战(一)基础储备_第4张图片

2.什么是sentinel?

sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保证稳定性

特征:

  1. 丰富应用场景,比如说阿里巴巴的双十一,比如秒杀、消息晓峰填谷、集群流量控制、实时熔断

  2. 完备的实施监控,提供了事实监控的功能,在控制台中看到介入应用的单台机器的秒级数据,甚至500台一下的集群汇总的运行情况

  3. 广泛开源生态,提供了开箱即用的与其他开源框架/库的整合模块,eg:sping cloud 、dubbo、grpc整合,只需要引入响应依赖+简单配置就可以快速介入sentinel 这不是重点面试官不会只问你怎么用,后几篇文章会描述原理,从源码入手

  4. 完善的spi的狂站点,可以通过实现扩展接口快速定制逻辑 eg:定制规则,比如说一些限流的规则,适配动态数据源等

戳这里下载 https://github.com/alibaba/Sentinel/releases/tag/1.7.0

启动 java -jar sentinel-dashboard-1.7.0.jar --server.port=9090 这里指定了端口 因为8080太常用了,默认为8080

环境: 账号密码都是sentinel

spring-cloud-alibaba微服务实战(一)基础储备_第5张图片

使用会在后期介绍

你可能感兴趣的:(spring,cloud)