SpringCloud学习前置知识

SpringCloud

1.从面试题开始

  • 什么是微服务
  • 微服务之间是如何独立通信的
  • SpringCloud和Dubbo有哪些区别
  • SpringBoot和SpringCloud,请谈谈对他们的理解
  • 什么是服务熔断?什么是服务降级
  • 微服务的优缺点分别是什么?说下你在项目开发中碰到的坑
  • 你所知道的微服务技术栈有哪些?
  • Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别

2.微服务概述

微服务是什么?

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

微服务和微服务架构?

微服务

​ 强调的是服务的大小,他关注的是某一个业务点,是具体解决某一问题/提供对应服务的一个服务应用,狭义的讲,可以看成maven工程中的一个module。

微服务架构

​ 微服务架构是一种架构模式,他提倡将单一的应用程序拆分成一组小的服务,服务之间相互调协调、相互配合、对外提供最终的价值。每一个服务运行独立的进程中,服务和服务之间通过轻量级的通信进行相互调用(通常使用的是Http协议的RESTful API协议)。每一个服务都围绕自己具体的业务构建,可以单独的部署到测试或者类生产环境等当中,另外,避免统一的集中式的服务管理机制、对某一个服务来说、可以根据自己的业务情况选择合适的语言和工具进行构建。

微服务的优点和缺点

优点
  • 每一个服务都足够内聚、足够小、代码容易理解
  • 开发简单、开发效率高,一个微服务只做一件事情
  • 微服务能够让一个小团队单独开发
  • 微服务是松耦合的、无论是在开发阶段或是部署阶段都是独立的
  • 可以使用不同的语言
  • 易于和第三方集成,持续集成工具
  • 可以良好的集成最新技术
  • 微服务只是逻辑代码,不会和HTML和CSS或者其他页面混合
  • 都有自己的存储能力,可以有自己单独的数据库,也可以统一的数据库
缺点
  • 运维人员要求比较高
  • 数据一致性
  • 开发人员需要处理分布式程序的复杂性
  • 系统之间依赖性
  • 系统测试
  • 服务器间通信成本

微服务技术栈有哪些?

微服务条目落地实现备注
服务开发Springboot、Spring、SpringMVc
服务配置与管理Netflix公司的Archaius、阿里的Diamond
服务的注册和发现Eureka、Consul、Zookeeper等
服务的调用Rest、RPC、gRPC
服务熔断器Hystrix、Envoy等
负载均衡Ribbon、Nginx等
服务接口调用(客户端调用服务端的简化工具)Feign等
消息队列Kafaka、RabbitMQ、ActiveMQ等
服务配置中心管理SpringCloudConfig、chef等
服务路由(API网关)Zuul等
服务监控Zabbix、Nagios、Metrics、Spectator等
全链路追踪Zipkin、Brave、Dapper等
服务部署Docker、OpenStack、Kubernetes等
数据量操作开发包SpringCloud Stream(封装与Rdis、Rabbit、Kafaka等收发消息)
事件消息总线SpringCloud Bus

为什么选用SpringCloud作为微服务架构?

选型依据
  • 整体解决方案和框架成熟度
  • 社区热度
  • 可维护性
  • 学习曲线
当前各大互联网公司的微服务架构有哪些?
  • 阿里的Dubbo/HSF
  • 京东JSF
  • 新浪微博Motan
  • 当当网Dubbox
各大微服务框架对比
功能点/服务框架Netflix/Spring cloudMotangRPCThriftDubbo/Dubbox
功能定位完整的微服务框架RPC框架、单整合了ZK或者Consul,实现集群环境的基本服务注册/发现RPC框架RPC框架服务框架
支持Rest是,Ribbon支持多种可插拔的序列化选择
支持RPC是(Hession2)
支持多语言是(Rest)
服务注册/发现是(Eureka)Eureka服务注册表,Karyon服务端框架支持服务自注册和健康检查是(ZK/Consul)
负载均衡服务端Zuul+客户端Ribbon;Zuul服务动态路由,云端负载均衡;Eureka针对中间层服务器是(客户端)是(客户端)
配置服务Netflix Archaius SpringCloud Config Server集中配置是(ZK提供)
服务调用链监控是(Zuul),Zuul提供边缘服务,API网关
高可用/容错是(服务端Hystrix+客户端Ribbon)是(客服端)是(客户端)
典型应用案例NetfilxSinaGoogleFacebook
社区活跃一般一般停止了五年
学习难度中等一般
文档丰富度一般一般一般

3.SpringCloud入门概述

是什么?

​ SpringCloud,基于Springboot提供的一套微服务解决方案,包括服务注册和发现、配置中心、全链路监控、服务网关、负载均衡、熔断器等组件,除了基于Netflix的开源组件做了高度抽象的封装之外,还有一些选型中立的开源组件。

​ SpringCloud利用Springboot的开发便利性巧妙地简化了分布式开发系统的基础设施的开发,SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等,它们都可以用Springboot的开发风格做到一键启动和部署。

​ Springboot并没有重复的造轮子,它只是将目前各家公司开发的比价成熟、经得起实际考研的服务框架组合起来,通过SpringBoot风格进行在封装屏蔽了复杂的配置和实现原理,最终给开发者留出了一套简单易用、易部署和易维护的分布式系统开发工具包

​ SpringCloud=分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称服务全家桶。

SpringCloud和Springboot是什么关系?
  • SpringBoot专注于快速方便的开发单个个体微服务。
  • SpringCloud是关注全局的微服务协调治理架构。
  • SpringBoot可以单独使用开发项目、单SpringCloud离不开SpringBoot。
Dubbo是怎么到SpringCloud的?那些优缺点?
  • 最大区别SpringCloud抛弃了RPC通信,采用是基于HTTP的REST方式
  • 品牌机和组装机的区别
  • 社区支持和更新力度

成熟的互联网架构(分布式+服务治理Dubbo)

见各大微服务框架对比

总结Cloud和Dubbo
  • Dubbo的定位始终是一款RPC框架、而SpringCloud的目标是微服务架构的一站是解决方案
  • Cloud和Dubbo只能二选一

能干啥?

上边的特性都有。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值