SpringCloud之基本使用与nacos,java开发模式面试题

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

Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架,用于实现服务通信。

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

4、阿里商业化组件

Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。

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

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

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

5、SpringCloud常用组件

Spring Cloud Netflix Eureka:服务注册中心。

Spring Cloud Zookeeper:服务注册中心。

Spring Cloud Consul:服务注册和配置管理中心。

Spring Cloud Netflix Ribbon:客户端负载均衡。

Spring Cloud Netflix Hystrix:服务容错保护。

Spring Cloud Netflix Feign:声明式服务调用。

Spring Cloud OpenFeign(可替代 Feign):OpenFeign 是 Spring Cloud 在 Feign 的基础上支持了Spring MVC 的注解,如 @RequesMapping等等。OpenFeign 的 @FeignClient 可以解析 SpringMVC的 @RequestMapping 注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

Spring Cloud Netflix Zuul:API 网关服务,过滤、安全、监控、限流、路由。

Spring Cloud Gateway(可替代 Zuul):Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0,SpringBoot 2.0 和 Project Reactor 等技术开发的网关,Spring Cloud Gateway 旨在为微服务架构提供一种简单而有效的统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。

Spring Cloud Security:安全认证。

Spring Cloud Config:分布式配置中心。配置管理工具,支持使用 Git 存储配置内容,支持应用配置的外部化存储,支持客户端配置信息刷新、加解密配置内容等。

Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config 联合实现热部署。

Spring Cloud Stream:消息驱动微服务。

Spring Cloud Sleuth:分布式服务跟踪。

Spring Cloud Alibaba Nacos:阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Spring Cloud Alibaba Sentinel:面向分布式服务架构的轻量级流量控制产品,把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

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

Spring Cloud Alibaba Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架,用于实现服务通信。

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

二、nacos搭建

=========

1、新建项目,将此项目作为父项目,给子类提供依赖

不需勾选:

2、cloud01项目导入依赖

packing(打包类型,默认为jar)

pom : 父级项目(pom项目里没有java代码,也不执行任何代码,只是为了聚合工程或传递依赖用的)

jar : 内部调用或者是作服务使用

war : 需要部署的项目

dependencyManagement(管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号)

dependencyManagement与dependencies区别:

dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)

dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。

如果不在子项目中声明依赖,是不会从父项目中继承下来的。

只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom。

另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

modules(用来管理同个项目中的各个模块)

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns=“http://maven.apache.org/POM/4.0.0”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

4.0.0

org.lv

cloud01

1.0-SNAPSHOT

pom

<maven.compiler.source>8</maven.compiler.source>

<maven.compiler.target>8</maven.compiler.target>

<spring-boot.version>2.4.1</spring-boot.version>

<spring-cloud.version>2020.0.0</spring-cloud.version>

<spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>

org.springframework.boot

spring-boot-starter-test

org.springframework.boot

spring-boot-starter-web

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-discovery

org.springframework.cloud

spring-cloud-starter-openfeign

org.projectlombok

lombok

org.springframework.boot

spring-boot-dependencies

${spring-boot.version}

pom

import

org.springframework.cloud

spring-cloud-dependencies

${spring-cloud.version}

pom

import

com.alibaba.cloud

spring-cloud-alibaba-dependencies

${spring-cloud-alibaba.version}

pom

import

3、下载nacos服务

①、nacos官网nacos官网

选择第二个:

②、启动服务:

咱们就使用cmd文件进行启动:

③、打开页面:

④、将自带的sql脚本导入数据库:

⑥、打开application.properties文件

新增连接数据库内容:并重新启动

spring.datasource.platform=mysql

db.num=1

db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?

characterEncoding=utf-8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC

db.user.0=root

db.password.0=123456

2、新建子项目:生产者项目

①、子项目需要认父:pom.xml

cloud01

org.lv

1.0-SNAPSHOT

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”>

4.0.0

com.provider

code

0.0.1-SNAPSHOT

nacos_provider

Demo project for Spring Boot

cloud01

org.lv

1.0-SNAPSHOT

<java.version>1.8</java.version>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<spring-boot.version>2.4.1</spring-boot.version>

org.apache.maven.plugins

maven-compiler-plugin

3.8.1

1.8

1.8

UTF-8

org.springframework.boot

spring-boot-maven-plugin

2.4.1

com.provider.code.NacosProviderApplication

repackage

repackage

②、父项目需要认子:pom.xml

nacos_provider

③、配置yml文件

spring:

cloud:

nacos:

discovery:

server-addr: 127.0.0.1:8848

application:

name: provider

server:

port: 8081

④、在启动类加入注解

//开启服务发现

@EnableDiscoveryClient

运行:

成功,并在nacos中产生服务

3、新建子项目:消费者项目

①、子项目需要认父:pom.xml,将不需要的依赖删掉,如生产者的

cloud01

org.lv

1.0-SNAPSHOT

②、父项目需要认子:pom.xml

nacos_provider

nacos_consumer

③、配置yml文件

spring:

cloud:

nacos:

discovery:

server-addr: 127.0.0.1:8848

application:

name: provider

server:

port: 8082

④、在启动类加入注解

//开启服务发现

@EnableDiscoveryClient

三、方法调用

======

例子:生产者生产物品,消费者拿

1、生产者


①、建个controller层:生产鸡腿

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

分布式技术专题+面试解析+相关的手写和学习的笔记pdf

还有更多Java笔记分享如下:

image

构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-XbP8xafS-1711961127012)]
[外链图片转存中…(img-9TobLR8y-1711961127013)]
[外链图片转存中…(img-9MREdBDq-1711961127013)]
[外链图片转存中…(img-xwCRgBS0-1711961127013)]
[外链图片转存中…(img-J8V4bEWR-1711961127014)]
[外链图片转存中…(img-oYvLVkgV-1711961127014)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-XbLZdBPM-1711961127014)]

最后

分布式技术专题+面试解析+相关的手写和学习的笔记pdf

还有更多Java笔记分享如下:

[外链图片转存中…(img-lHaeeApi-1711961127015)]

  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值