SpringCloud01_微服务 Microservices 概述

106 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情


⭐️前面的话⭐️

✉️坚持和努力一定能换来诗与远方!
💭推荐书籍:📚《王道408》,📚《深入理解 Java 虚拟机-周志明》,📚《Java 核心技术卷》
💬算法刷题:✅力扣🌐牛客网
🎈Github
🎈码云Gitee


写在前面

推荐

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式_黑马20210811

[ 动力结点 ]springcloud微服务SpringCloud+SpringCloud Alibaba 双管齐下玩转SpringCloud

常用总结

 项目布局  
 cloud_demo -- 父工程:定义版本         
   ├── eureka-server -- 注册中心
   ├── feign-api -- 远程调用接口定义
   ├── gateway -- 网关配置
   ├── order-service -- 订单服务
   ├── user-service -- 用户服务
   └── pom.xml -- 父pom 
 # 注册中心Eureka
 服务消费者该如何获取服务提供者的地址信息?
 ​
 果有多个服务提供者,消费者该如何选择?
 ​
 消费者如何得知服务提供者的健康状态?
 ​
 # 负载均衡
 ​
 # 配置中心
 ​
 # feign远程调用
 基于RestTemplate发起的http请求实现远程调用,只要知道对方的ip、端口、接口路径、请求参数即可。
 一个服务既可以是提供者,也可以是消费者。
 ​
 # Gateway服务网关

问题解决

服务框架学习路线

完整微服务技术栈:微服务技术 + 持续集成

微服务并不是等于 springcloud 技术

消息队列:异步通信大大提高服务的并发,秒杀等高并发场景利用

系统监控链路追踪:实时监控每一个服务节点的运行状态、CPU负载、内存的占用等等情况,一旦出现任何的问题,可以直接定位到某一具体的方法栈信息,快速定位异常所在。

自动化部署:工具Jenkins,Docker打包形成镜像

需要学习的微服务知识

学习路径

分层次教学

知识层次

springcloud实用篇一

 注册中心
 ​
 负载均衡器

一、认识微服务 Microservices

服务框架演变

1、单体架构(单体应用):将业务的所有功能集中在一个项目中开发,打成一个包部署,从而对外提供服务。

2、分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。

3、微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:

单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发

面向服务:微服务对外暴露业务接口

自治:团队独立、技术独立、数据独立、部署独立

隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

 # 关于微服务的概念
 - 拆分,HTTP
 微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务。
 这些小型服务都在各自独立的进程中运行,服务之间通过基于 HTTP 的 RESTful API 进行通信协作;
 ​
 - 独立
 被拆分后的每一个小型服务都专注于完成系统中的某一项业务功能,职责单一,
 并且每个服务都是一个独立的项目,可以进行独立的测试、开发和部署等;
 ​
 - 语言
 由于各个独立的服务之间使用的是基于 HTTP 的 JSON 作为数据通信协作的基础,所以这些微服务也可以使用不同的语言来开发;
 ​
 # 分布式和微服务有什么区别?
 它们的本质的区别体现在 目标 上。
 何为目标,就是你采用分布式架构或者采用微服务架构,你最终是为了什么,要达到什么目的?
 ​
 分布式架构的目标是什么? 
 就是访问量很大一台机器承受不了,或者是成本问题,不得不使用多台机器来完成服务的部署;
 ​
 而微服务的目标是什么?
 只是让各个模块拆分开来,不会被互相影响。
 比如模块的升级或者出现BUG或者是重构等等都不要影响到其他模块,微服务它是可以在一台机器上部署;
 ​
 分布式注重性能,微服务在此基础上更加注重业务
 ​
 # 微服务与Spring-Cloud的关系或区别?
 架构方式、架构理念与技术落地实现

微服务技术对比

微服务这种方案需要技术框架来落地,全球的互联网公司都在积极尝试自己的微服务落地技术。

在国内最知名的就是 SpringCloud 和阿里巴巴的Dubbo。

SpringCloud

SpringCloud是目前国内使用最广泛的微服务框架。官网地址:spring.io/projects/sp…

SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。

SpringCloud与SpringBoot的版本兼容关系如下:

 # 黑马课程
 使用的版本是Hoxton.SR10,因此对应的SpringCloud版本是2.3.x版本。
 ​
Release TrainBoot Version
2021.0.x aka Jubilee2.6.x
2020.0.x aka Ilford2.4.x, 2.5.x (Starting with 2020.0.3)
Hoxton2.2.x, 2.3.x (Starting with SR5)
Greenwich2.1.x
Finchley2.0.x
Edgware1.5.x
Dalston1.5.x