结合Redis和MySQL实现的Gateway动态路由
Gateway动态路由What?前段时间买了个服务器,没怎么用,就跑了个在线获取IdeaCode的程序。使用率不怎么高,这次准备在跑一个Gateway网关,以后就把我所有的程序都接入到网关里。但是以前网关里的路由都是硬编码的形式写到配置文件里的,这就意味着我每发布一个程序都要重新打包部署一下网关。
程序猿的存在就是解决一些需要频繁操作的事件,所以要想办法解决硬编码路由的问题,所以我写了本篇Gateway动态路由。
思路Gateway的路由配置有两种方式,一种是通过配置文件配置,一种是通过代码配置。我准备做一个类似于管理系统的系统来管理路由配置,所以要使用代码的方式配置路由。
在项目启动的时候从数据库读取配置并且存到Redis中。Gateway在初始化的时候从Redis中获取配置。
开发前的准备
一台电脑(废话,没有电脑怎么开发)
Nacos注册中心(路由转发需要用到)
MySQL数据库(持久化的储存路由配置)
Redis(路由配置缓存)
JDK1.8(我是基于JDK1.8做的开发)
Maven(现在可是Maven的天下,总不能一个一个的添加依赖吧)
预览Github:https:// ...
Gateway负载均衡及集群搭建
Gateway负载均衡及集群搭建注:本文写的是Gateway的负载均衡及集群的搭建,Gateway的使用不在本文中介绍。
Gateway-负载均衡
负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。
准备
Nacos:1.3.1
JDK版本:1.8
系统:Win10
一、创建Gateway项目这里不在详细说明Gateway的创建。最简单的方式就是使用IDEA的Spring Initializr创建,只需勾选几下就可以了。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374<?xml version="1.0" encoding="UTF-8"?> ...
Win10-Nacos集群部署
Win10-Nacos集群部署
因为工作需要用到Nacos集群部署,所以在此记录下Nacos集群部署的过程以及遇到的坑。
准备工作:
Nacos版本:1.3.1
JDK版本:1.8
系统:Win10
数据库:MySQL8.0
Nacos集群部署官方文档:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html(我按照官方文档部署没有成功,可能官方文档的教程只适用于Linux/Unix/Mac)
本次部署是在一台机器上,使用三个不同的端口,模拟三台Nacos机器
一、下载NacosGithub:https://github.com/alibaba/nacos/releases
二、配置数据库解压下载好的Nacos,在conf文件下有一个nacos-mysql.sql文件,执行该SQL文件,把数据导入到数据库中
修改Nacos下的conf文件下的application.properties文件(去掉注释,修改数据库即可)
123456789spring.datasource.platform=mysql### Count o ...
Nacos配置中心疯狂打印日志问题
今天弄Nacos配置中心的时候,后端疯狂的打印日志,后来测试了下发现是本地的Nacos本版太高了(1.3.1),和引入的依赖的版本不匹配,后来下载了一个低版本的Nacos(1.2.1)就可以了版本关系:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明
华为鸿蒙OS之HelloWorld
华为鸿蒙OS之HelloWorld这两天有一个很火的话题华为鸿蒙OS2.0。现在个人开发者也可以进行鸿蒙OS的应用或者硬件开发。作为一个“啥也不会的程序员”,时刻要保持着学习的心态,所以本文将会介绍基于鸿蒙OS的应用开发。
官网:https://www.harmonyos.com/
入学第一课,HelloWorld程序员的第一课,HelloWorld,鸿蒙OS也不能例外。
开发工具鸿蒙OS开发工具:https://developer.harmonyos.com/cn/develop/deveco-studio
注:目前还只有Windows-64Bit版本的
安装
配置
默认安装到C盘,选择取消,手动选择安装位置
中间少了一个图…
到此配置结束
HelloWorld开发项目时,有三种可选
TV(TV设备)
Wearable(可穿戴设备)
Lite Wearable(可穿戴设备(lite))
这里选择的是TV(Java)
创建项目
安装虚拟机
之后浏览器会打开一个页面,按照提示进行开发者账号注册
注册之后会出现授权页,允许授权(使用Windows自带的浏 ...
一文搞懂MyBatisPlus的使用(2020/10/18更新,补充多数据源)
简介
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
官网:https://baomidou.com/
特性
无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
内置代码生 ...
(四)SpringCloud之Feign声明式服务调用
入门案例1、创建Maven聚合项目
Feign-Demo:父项目
eureka-server:Eureka注册中心
eureka-server02:Eureka注册中心
service-provider:服务提供者
service-consumer:服务消费者
父项目:pom.xml
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950<?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 ...
(三)SpringCloud之Consul注册中心
Consul注册中心Consul介绍Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式 服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发现框架、分布一致性协议实 现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具(比如 ZooKeeper 等),使 用起来也较为简单。
Consul 使用 Go 语言编写,因此具有天然可移植性(支持Linux、Windows 和 Mac OS);安装包仅 包含一个可执行文件,方便部署,与 Docker 等轻量级容器可无缝配合。
Consul特性
Raft算法
服务发现
健康检查
Key/Value储存
多数据中心
支持Http和Dns协议接口
官方提供Web管理界面
Consul角色Client客户端,无状态,将Htpp和DNS接口请求转发给局域网内的服务端集群。
Server服务端,保存配置信息,高可用集群,每个书中心的server数量推荐3个或5个。
Consule安装1、下载Consulhttps://www.consul.io/downl ...
(二)SpringCloud之Ribbon负载均衡
Ribbon负载均衡的使用1、什么是RibbonSpring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在于每一个Spring Cloud构建的微服务和基础设施中。包括Feign提供的声明式服务嗲用也是基于该Ribbon实现的。
Ribbon默认提供7种负载均衡算法
轮询策略(默认)
权重轮询策略
随机策略
最少并发策略
重试策略
可用性敏感策略
区域敏感策略
如果以上七种算法都不满足需求,还可以自定义负载均衡算法
2、Ribbon的作用是什么Ribbon提供了一套适用于微服务的负载均衡解决方案。
3、负载均衡不同方案的区别目前业界主流的负载均衡方案可以分为两类
集中式负载均衡(服务器负载均衡)
进程式负载均衡(客户端负载均衡,Ribbon就属于该方案)
3.1、集 ...
(一)SpringCloud之Eureka注册中心
Eureka注册中心1、什么是注册中心打个比方,注册中心就好比手机中的通讯录,所有的联系人的联系方式就在这个通讯录中储存。当需要打电话的时候,只需要查询通讯录就可以获取某个联系人的联系方式。
注册中心类似于通信录,只不过注册中心储存的不是联系人的联系方式,而是每个服务的信息,从注册中心获取服务就好比通讯录的查询联系人,向注册中心注册服务,就好比通讯录的保存联系人,先有注册,才能查找。
注:注册中心只不过是用来注册和获取服务,并不会用来调取服务,具体的调取服务有获取服务方实现。就好比通讯录只负责储存和查询联系人,查到联系人后使用拨号软件拨打查询到的联系人电话。
2、CAP原则和BASE理论2.1、CAP原则
名称
描述
Consistency
一致性。也叫做原子性。系统在执行某些操作后数据仍然处于一致的状态。在分布式系统中,更新操作执行成功后所有的用户都应该读到最新的值,这样的系统被认为是具有强一致性的。等同于所有节点访问同一份最新的数据副本。
Availability
可用性。每一个操作总是能够在一定的时间内返回结果,这里需要注意的是”一定时间内”和”返回结果”。一 ...