springCloud学习记录(待完善)

SpringCloud

1,概述

1.1,架构发展历史

三层架构 (MVC)

Spring框架(IOC、AOP)

SpringBoot(新一代的javaEE,自动配置)

image-20220307222206343

微服务(all in one 业务拆分)

image-20220307222337689

1.2,微服务问题

  • 服务很多,该怎么访问?负载均衡
  • 这么多服务?服务之间如何通信?Http,RPC
  • 如何治理?注册和发现中心 Consul,Eurake
  • 服务挂了这么办?集群,备份,容灾

1.3,解决方案

spring cloud就是一个生态专门为了解决上述的四个问题

  1. Spring Cloud netFlix 一站式解决方案

    1. api网关,zuul组件
    2. feign--httpClient---http通信方式,同步,阻塞
    3. 服务注册与发现:eurake
    4. 熔断机制:hystrix
  2. Apache Dubbo zookeeper 半自动,需要整合其他人的

    1. api网关:没有,整合第三方,或者自己实现
    2. dubbo
    3. zookeeper
    4. 熔断机制:借助hystrix
  3. Spring Cloud Alibaba 一站式解决方案

    新概念:服务网格~server Mesh

核心(网络不可靠!):

  1. API
  2. HTTP,RPC
  3. 注册和发现
  4. 熔断机制

2,微服务

2.1,是什么?

微服务(Microservices)——Martin Flower

一种架构模式和风格,提倡将单一的应用程序划分程一组小的服务,每个服务运行在自己独立的进程中。服务之间互相协调和配置。

微服务化的核心就是将传统的一站式应用,根据业务拆分程一个个的服务,彻底地去耦合,每一个微服务提供当业务功能的服务,一个服务做一件事情,从技术角度看就是一种小而独立的处理过程,类似进程的概念,能够自行单独启动或者销毁,拥有自己独立的数据库。

2.2,微服务与微服务架构

强调的是服务的大小,他关注的是某一个点,是具体解决某一个问题/提供落地地对应服务的一个服务应用,狭义的看,可以看做是IDEA中的一个个微服务工程,或者module。

微服务架构

一种新的架构形式,Martin fowler,2014提出

微服务架构师一个架构模式,提倡将单一应用程序拆分成一组小的服务,服务之间相互协调,互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务之间采用轻量级的通信机制相互协作,每个服务都围绕着具体的业务进行构建,并且能够独立的部署到生成环境中。另外,应尽量避免统一的,集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言,工具对其进行构建。

2.3,微服务优缺点

优点:

  • 单一职责
  • 每个服务足够内聚,足够小,代码容易理解,这样能聚焦一个指定的业务功能或业务需求
  • 开发简单,开发效率提高,一个服务可能就是一个专一的只能干一件事
  • 微服务能够被小团队独立开发,这个小团队是2~5人的开发人员
  • 微服务是松耦合的,是由功能意义的服务,无论是在开发阶段或是部署阶段都是独立的
  • 微服务能使用不同的语言开发
  • 易于和第三方集成,微服务运行容易且灵活的方式集成自动部署,通过持续集成工具,如jenkins,hudson,bamboo
  • 微服务易于被一个开发人员理解,修改和维护,这样的小团队能够更关注自己的工作成果,无需通过合作才能体现价值
  • 微服务运行你利用融合技术
  • 微服务质数业务逻辑代码,不会和htmlcss或者其他页面混合
  • 每个微服务都有自己的存储能力,可以由自己的数据库,也可以由统一的数据库

缺点:

  • 开发人员需要处理分布式系统的复杂性
  • 多服务运维难度,随着服务的增加,运维的压力也在增大
  • 系统部署依赖
  • 服务间通信
  • 数据一致性
  • 系统集成测试
  • 性能监控

2.4,微服务技术栈

微服务条目 落地技术
开发 SpringBoot、Spring,SpringMVC
配置与管理 Netflix的archaius,阿里的diamond,携程的apollo
注册与发现 eureka、consul、zookeeper
调用 Rest、RPC、gRPC
熔断器 hystrix,envoy
负载均衡 ribbon、nginx
接口调用 feign
消息队列 kafka、rabbitmq、activemq
配置中心管理 springCloudConfig、chef
路由(API网关) zuul
监控 zabbix、nagios、metrics、specatator
全链路追踪 zipkin,brave,dapper
部署 docker、OpenStack、kubernetes
数据流操作开发包 springCloudStream(封装redis、rabbitmq、kafka等)
事件消息总线 springCloudBus
  • 什么是微服务?

之前的单机服务,将聚合功能拆分形成一个个功能服务

  • 微服务之间是如何独立通信的?

RPC和http

  • SpringCloud和Dubbo的区别?

springCloud专注于解决微服务的问题,Dubbo可以看做springCloud的一个子集,它专注于解决调度、发现、监控、治理等功能

  • SpringBoot和SpringCloud,谈谈自己的理解

springCloud是一个解决微服务问题的生态,其依赖于springBoot,而springBoot可以看做是spring的升级版更加便于我们开发

  • 什么是服务熔断?什么是服务降级
  • 微服务的优缺点分别是什么?说一下你在项目中遇到的坑
  • 你所知道的微服务技术栈有哪些?请列举一二

Netflix、阿里巴巴、dubbo

  • eurake、consul和zookeeper都可以提供服务注册和发现机制,说说他们的区别

posted on 2022-03-07 00:36  周健康  阅读(33)  评论(0编辑  收藏  举报

导航