学习笔记 01 - 微服务及其他


微服务大纲知识梳理

  • netflix

    • 注册中心 Eureka:服务注册、发现
    • 负载均衡 Ribbon:客户端负载均衡;负载均衡策略:轮询、权重、随机、最小随机数、重试、可用敏感性和区域敏感性
    • 配置中心 Config
    • 容错 Hystrix:熔断、降级、线程隔离
    • 网关 zuul
    • 远程调用 feign
    • 消息总线 bus -> MQ
  • spring cloud

    • 远程调用 feign -> openfeign
    • 网关 gateway -> webflux
    • 注册中心 consul
  • alibaba

    • nacos:注册中心(服务发现,服务列表拉取)和配置中心
    • sentinel:熔错 -> 信号量隔离;限流:模式(直接、关联和链路),网关(API 管理)
    • seata:分布式事务(2PC)

Nacos 服务发现

服务注册中心、配置中心和服务管理平台
常见的注册中心有:Nacos、Eureka、Consul、Zookeeper

使用步骤:安装 | 打开 Nacos 服务端 -> 添加依赖
-> 修改配置文件

spring:
	application:
		name: spring-example-server
	cloud:
		nacos:
			discovery:
				server-addr: 127.0.0.1:8848
				namespace: public
				username: nacos
				password: nacos

-> 在启动类上添加 @EnableDiscoveryClient 注解,开启 Spring Cloud 的服务注册和发现功能
-> 启动测试,在 Nacos 服务端上查看已启动的服务模块

OpenFeign 服务调用

Open Feign 是基于 Netflix feign 实现的一个 HTTP 请求调用的轻量级框架,Spring Cloud 对 Feign 进行了增强,使 Feign 支持了 Spring MVC 注解,并整合了 Ribbon 和 Eureka,可以以 Java 接口注解的方式调用 HTTP 请求。

使用方式:引入依赖 -> 在启动类上添加注解

// 开启 feign 调用支持
@EnableFeignClients(basePackages = "com.example")

-> 创建 feign 客户端接口

@FeignClient(name = "service-name", path = "/web-path")
public interface ExampleClient {

	/**
	 * 接口方法与 controller 调用方法一一对应
	 */
	@GetMapping("/{id}")
	public Result<Example> getById(@PathVariable Integet id);
}

-> 注入该接口并调用

@Autowired
private ExampleClient exampleClient;
exampleClient.getById(1);

Gateway 服务网关

API 网关是一个服务,是系统的唯一入口;封装了系统内部的架构,为客户提供特定接口,还能负责身份验证、监控、负载均衡等功能。

  • Spring Cloud Gateway:
    • 路由 Route
    • 断言 Predicate
    • 过滤器 Filter

Sentinel 实现限流功能

引入依赖 -> 添加配置 -> 在 sentinel-dashboard 中配置流控规则

MyBatis-Plus

条件构造器

比较大小

/**
 * eq(=)、ne(!=)、gt(>)、ge(>=)、lt(<)、le(<=)
 */
eq(R column, Object val);
eq("name", "老王");

范围

between(R column, Object val1, Object val2);
notBetween(R column, Object val1, Object, val2);
in(R column, Object... values);
notIn(R column, Object... values);
inSql(R column, Object... values);
notInSql(R column, Object... values);

模糊匹配
空值比较
分组、排序
拼接、嵌套 sql
QueryWrapper

public User loadUserByUsername(String account, String password) {
     QueryWrapper<User> queryWrapper = new QueryWrapper<>();
     Map<String, String> map = new HashMap<>();
     map.put("account", account);
     map.put("password", password);
     queryWrapper.allEq(map);
     User user = userMapper.selectOne(queryWrapper);
     return user;
 }

UpdateWrapper

MyBatisX 插件:快速生成代码

IDEA 中安装插件 -> 在 IDEA 中连接并配置好数据 -> 选择要生成的表 ->

  • 右键,MyBatisX-Generator
    • module path:工程名字
    • base package:com.example.demo
    • relative package:实体类包名 pojo
  • 配置生成 mapper、service 文件所在的位置

其他知识点笔记

dependencyManagement 和 dependencies

  • pom 文件中 dependencyManagement 和 dependencies 区别
    • dependencyManagement 只是声明依赖,并不实现引入,在子项目中显示声明需要使用的依赖,不在子项目中声明的依赖,不会在从父项目中继承下来。
    <!-- 父模块中声明可能使用的依赖,在子模块中引入时,不需声明版本号 -->
    <modules>
    	<module>subModuleName</module>
    </modules>
    <properties>
    	<spring-vesion>3.1.1</spring-version>
    </properties>
    <dependencyManagement>
    	<dependency>
    		<groupId>orr.springframework</groupId>
    		<artifactId>spring-web</artifactId>
    		<version>${spring-version}</version>
    	</dependency>
    </dependencyManagement>
    
    • dependencies 会使子模块从父模块中全部继承依赖。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值