IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring Cloud微服务入门、实战与进阶(目录总览) -> 正文阅读

[Java知识库]Spring Cloud微服务入门、实战与进阶(目录总览)

此文章是入门Spring Cloud入门的基础内容,倘若基本了解,可直接阅读Spring Cloud入门的基础篇,学习记录的资料主要来源于(~ ̄▽ ̄)~ 书籍Spring Cloud微服务入门、实战与进阶(尹吉欢)ヽ(゚?゚)メ(゚?゚)ノ ,基础篇

一、Eureka注册中心

持续更新中~~~(~ ̄▽ ̄)~


Spring Cloud的官网地址: https://spring.io/projects/spring-cloud

一、微服务的概括和Spring Cloud

1、什么是微服务?

是一种架构风格(而分布式是系统部署的方式)。开发单个应用作为一系列小型服务的套件,其中每个服务都运行在自己的进程中,并且通过轻量级的机制实现彼此间的通信,这通常是HTTP资源API。这些服务是围绕着业务功能构建的,并且可以通过完全自动化的部署机制进行独立部署。这些服务的集中式管理做到了最小化(例如docker相关技术,可了解此文章:点我(?ω?)),每—种服务都可以通过不同的编程语言进行编写,并且可以使用不同的数据存储技术。

2、微服务优缺点

优势

使用微服务架构能够为我们带来如下好处:

1)、服务的独立部署:每个服务都是一一个独立的项目,可以独立部署,不依赖于其他服务,耦合性低。
2)、服务的快速启动:拆分之后服务启动的速度必然要比拆分之前快很多,因为依赖的库少了,代码量也少了。
3)、更加适合敏捷开发:敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行。服务拆分可以快速发布新版本,修改哪个服务只需要发布对应的服务即可,不用整体重新发布。
4)、职责专一,由专门的团队负责专门的服务:业务发展迅速时,研发人员也会越来越多,每个团队可以负责对应的业务线,服务的拆分有利于团队之间的分工。
5)、服务可以动态按需扩容:当某个服务的访问量较大时,我们只需要将这个服务扩容即可。
6)、代码的复用:每个服务都提供REST API,所有的基础服务都必须抽出来,很多的底层实现都可以以接口方式提供。

缺点
微服务其实是一把双刃剑,既然有利必然也会有弊。下面我们来谈谈微服务有哪些弊端,以及能采取什么办法避免。

1)、分布式部署,调用的复杂性高:单体应用的时候,所有模块之前的调用都是在本地进行的,在微服务中,每个模块都是独立部署的,通过HTTP来进行通信,这当中会产生很多问题,比如网络问题、容错问题、调用关系等。
2)、独立的数据库,分布式事务的挑战:每个微服务都有自己的数据库,这就是所谓的去中心化的数据管理。这种模式的优点在于不同的服务,可以选择适合自身业务的数据,比如订单服务可以用MySQL、评论服务可以用Mongdb、商品搜索服务可以用Elasticsearch。缺点就是事务的问题了,目前最理想的解决方案就是柔性事务中的最终一致性, 后面的章节会给大家做具体介绍。
3)、测试的难度提升:服务和服务之间通过接口来交互,当接口有改变的时候,对所有的调用方都是有影响的,这时自动化测试就显得非常重要了,如果要靠人工一个个接口去测试,那工作量就太大了。这里要强调一点,就是API文档的管理尤为重要。
4)、运维难度的提升:在采用传统的单体应用时,我们可能只需要关注一个 Tomcat的集群、一个MySQL的集群就可以了,但这在微服务架构下是行不通的。当业务增加时,服务也将越来越多,服务的部署、监控将变得非常复杂。这个时候对于运维的要求就高了。

3、微服务拆分

什么时候进行服务化拆分

第一阶段的主要目标是快速开发和验证想法
进一步增加更多的新特性来吸引更多的目标用户
同时进行开发的人员超过10人,这个时候就该考虑进行服务化拆分了

不适合拆分的情况

小团队,技术基础较薄弱
流量不高,压力小,业务变化也不大
对延迟很敏感的低延迟高并发系统
业务稳定、迭代周期长

服务化拆分的两种姿势

纵向拆分
横向拆分
结合业务综合分析

4、什么是Spring Cloud

Spring Cloud是一系列框架的有序集合。 它利用 Spring Boot的开发便利性, 巧妙地简化了分布式系统基础设施的开发,如服务注册、服务发现、配置中心、消息总线、负载均衡、断路器、数据监控等,这些都可以用Spring Boot的开发风格做到一键启动和部署。通俗地讲,Spring Cloud就是用于构建微服务开发和治理的框架集合(并不是具体的一个框架),主要贡献来自Netflix OSS。
(:Netflix是一家互联网流媒体播放商,是美国视频巨头,随着Netflix转型为一家云计算公司,它也开始积极参与开源项目。Netflix OSS(Open Source)就是由Netflix公司主持开发的一套代码框架和库,目的是解决上了规模之后的分布式系统可能出现的一些有趣问题)。

5、微服务重要模块

Spring Cloud模块介绍
1、Eureka: 服务注册中心,用于服务管理。

2、Ribbon: 基于客户端的负载均衡组件。

3、Hystrix: 容错框架,能够防止服务的雪崩效应。

4、Feign: Web 服务客户端,能够简化HTTP接口的调用。

5、Zuul: API网关,提供路由转发、请求过滤等功能。

6、Config: 分布式配置管理。

7、Sleuth: 服务跟踪。

8、Stream: 构建消息驱动的微服务应用程序的框架。

9、Bus: 消息代理的集群消息总线。

除了上述模块,还有Cli、Tas…就不在这里一一介绍了。

核心组件

在这里插入图片描述

二、Spring Boot入门和常用技术介绍(复制粘贴即可用)

Spring Boot简单入门:https://blog.csdn.net/weixin_45537947/article/details/105909671
Spring Boot常用开发技术的集合:https://blog.csdn.net/weixin_45537947/article/details/108214875
Spring Boot实现用户账号的CRUD小案例:https://blog.csdn.net/weixin_45537947/article/details/108214952
Spring Boot实现简单微信小程序小案例:https://blog.csdn.net/weixin_45537947/article/details/108568018

Spring Boot常用的开发技术:

1、热部署

开发过程中经常改动代码,此时若想看下效果,就不得不停下项目然后重启。对于Sning Boot项目来说,启动时间是非常快的,在微服务的架构下,每个服务只关注自己的业务,代码量也非常小,这个启动时间是可以容忍的。对于那些臃肿的单体老项目,启动时间简直是浪费生命。虽然Spring Boot 启动很快,但是我们还是要自己去重启。能不能做到有改动,它就会悄无声息地自己把改动的地方重新加载一遍?答案是肯定的,通过spring-boot-devools就可以实现。
pom.xml:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
</dependency>

开启自动编译:
在这里插入图片描述
然后点击OK后,同时按下Shift+Ctrl+Alt+/,选择Registry:
在这里插入图片描述
在这里插入图片描述
勾起后点击Close,重启IDEA,这样配置就完成了,之后的使用只需要Ctrl+s的保存操作,Spring Boot就会重新加载被修复的Class。

2、actuator监控

Spring Boot提供了一个用于监控和管理自身应用信息的模块,它就是spring-boot-starter-actuator。只需引入依赖便可使用:
pom.xml:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

当我们访问 /actuator/health可以得到下面的信息:

{
    "status": "UP"
}

Actuator端点信息
在这里插入图片描述
UP表示当前应用处于健康状态,如果是DOWN就表示当前应用不健康。
添加下面的配置:

#显示健康信息的详情
management.endpoint.health.show-details=always

访问 /actuator/health:
在这里插入图片描述
可以看出大部分的端点都不暴露出来,我们可以手动配置需要暴露的端点。如果需要暴露多个端点,可以用逗号分隔,例如下:

management.endpoints.web.exposure.include=configprops,beans

如果想全部暴露直接配置下面方式:

management.endpoints.web.exposure.include=*

3、统一异常处理

下面是简单的统一异常处理模板:
GlobalExceptionHandler.java:

@ControllerAdvice
public class GlobalExceptionHandler {

    private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public ResponseDate defaultErrorHandler(HttpServletRequest req,
                                            Exception e) throws Exception {
        logger.error("", e);
        ResponseDate r = new ResponseDate();
        r.setMessage(e.getMessage());
        if (e instanceof org.springframework.web.servlet
                .NoHandlerFoundException) {
            r.setCode(404);
        } else {
            r.setCode(500);
        }
        r.setData(null);
        r.setStatus(false);
        return r;
    }
}

统一异常处理的实体类:
ResponseDate.java:

@Data
public class ResponseDate {
    private Boolean status = true;
    private int code = 200;
    private String message;
    private Object data;
    //get set
}

application.properties配置:

#统一异常处理配置
#出现错误时, 直接抛出异常
spring.mvc.throw-exception-if-no-handler-found=true

欢迎继续阅读Spring Cloud基础篇 (?ω?)

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 23:14:42  更:2021-07-28 23:14:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 7:30:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码