官方文档
官方文档:https://www.ignite-service.cn/doc/java/,本文主要手把手对Spring Cloud+Apache Ignite实现一个简单实例便于理解,具体Ignite的细节学习请参考文档。
序
新电脑,因此我一切也是从0开始。
零、JDK
0.1 下载
网址: https://www.oracle.com/java/technologies/downloads/#java8
注册登录Oracle账户后,开始下载
由于网速太慢,改为在此下载:http://www.winwin7.com/soft/50828.html
0.2 安装
下载后一直点下一步安装就行
0.3 配置
打开【系统属性】界面,点击【高级】–》【环境变量】,在【系统变量】下点击【新建】
变量名输入:JAVA_HOME
,变量值输入:C:\Program Files\Java\jdk1.8.0_131
继续新建系统变量
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib;
点击系统变量中的Path,点击编辑,输入:%JAVA_HOME%\bin
并保存
打开cmd窗口输入java -version
进行测试
一、IDEA
1.1 下载
网址: https://www.jetbrains.com/idea/download/#section=windows,记得要下载专业版
1.2 安装
打开后选择Start trial,注册账号并登录
二、MySQL
2.1 下载
网址:https://www.mysql.com/
输入之前注册的Oracle账户进行下载,这次网速很快
2.2 安装
下载后,解压到了C盘
2.3 配置
创建一个txt文件,输入以下内容,然后命名为my.ini
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir = C:\mysql-8.0.30-winx64
# 设置mysql数据库的数据的存放目录
datadir = C:\mysql-8.0.30-winx64\data
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 创建模式
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
进入该目录进行初始化
.err文件里有初始账号密码
以管理员身份进行服务安装
启动
2.4 MySQL可视化客户端
下载链接:http://www.navicat.com.cn/download/navicat-premium
一路下一步安装即可,输入root和密码
创建了一个数据库叫ignite
三、EurekaServer
3.1 创建一个空的maven工程
将其pom.xml修改如下:
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>demo</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>eureka-server</module>
</modules>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.7.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
3.2 创建eureka-server
在当前模块下创建一个子module
引入eureka-server的依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
</dependencies>
在 eurekaserver 子工程的 resources 目录下创建 application.yml 配置如下:
server:
port: 8761 #当前eureka server 服务端口
eureka:
client:
register-with-eureka: false #是否将当前的 eureka server 服务作为客户端进行注册
fetch-registry: false #是否获取其他 eureka server 服务的数据
service-url:
defaultZone: http://localhost:8761/eureka/ #注册中心的访问地址
创建启动类:
@SpringBootApplication //SpringBoot 服务的入口
@EnableEurekaServer
public class EurekaServer {
public static void main(String[] args) {
SpringApplication.run(EurekaServer.class,args);
}
}
四、部署Ignite
4.1 创建一个module
4.2 引入依赖
在父工程的pom.xml引入ignite的依赖,此时刚才的子项目ignite-server由于继承了父工程的pom,已经可以开发ignite
除此之外,还需要引入mysql所需的依赖
4.3 创建数据库表
本例使用JDBC作为ignite集群间通信的实现方式,根据Ignite的JDBC探测器相关源码发现,存储ip地址的数据库表名为tbl_addrs,因此我们需要创建一个这样的数据库表。以及两个字段:hostname、port。
使用navicat创建这样的数据库表:
4.4 编写服务器程序
服务器程序如下,直接使用main方法即可:
public static void main(String[] args) {
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setURL("jdbc:mysql://localhost:3306/ignite");
dataSource.setUser("root");
dataSource.setPassword("/QMdpls8Zseg");
// 创建一个Ignite配置
IgniteConfiguration cfg = new IgniteConfiguration();
// 创建一个基于TCP的发现其他Ignite实例的Spi对象
TcpDiscoverySpi discoverySpi = new TcpDiscoverySpi();
// 创建一个基于JDBC的IP探测器
TcpDiscoveryJdbcIpFinder ipFinder = new TcpDiscoveryJdbcIpFinder();
ipFinder.setDataSource(dataSource);//设置数据源
discoverySpi.setIpFinder(ipFinder);//设置IP探测器
cfg.setDiscoverySpi(discoverySpi);//设置Spi
//启动Ignite服务器
Ignition.start(cfg);
}
五、EurekaConsumer
5.1 创建eureka-consumer
接下来,我们需要编写eureka客户端程序,调用ignite的客户端程序来进行操作。
在其pom文件中添加:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
创建启动类:
在 eureka-consumer子工程的 resources 目录下创建 application.yml 配置如下:
5.2 配置数据源
创建一个数据源配置类,代码和ignite-server里一样
5.3 编写客户端程序
代码和服务器端一样,只是多了一行设置客户端模式
六、测试
6.1 启动eureka-server
6.2 启动eureka-consumer
6.3 启动Ignite服务器程序
启动后观察控制台,目前已连接一台服务器,0台客户端(Ignite节点默认是服务器模式)。
可以观察到tbl_addrs中增加了当前服务器的IP地址:
6.4 测试
在浏览器输入:localhost:8080/ignite/test
观察服务器程序,客户端已经成功链接
接下来就可以参考官方文档调用Ignite实例进行其他操作了。