说到分布式自然就离不开分布式和微服务的话题,简单聊一下。

微服务是一种软件架构方式,或者说一个一种结构设计风格,它并不是标准,它的逻辑是把一个整体服务按业务拆分成不同独立的服务,降低服务强依赖,消服务器消息驱动,惯用的例子:买东西涉及到订单,仓库,扣钱,以前都是把这些功能作在一个项目中,在一个jvm进程中运行,微服务怎么搞,把订单,仓库,扣钱,搞成三个独立的项目,运行在三个不同的jvm进程中,服务之间使用http调用或者mq驱动。

分布式是什么东西呢?分布式更多的强调的是一种部署方式,上面微服务已经把一个项目拆分成了几个不同的项目,那现在项目需要运行起来提供对应的服务,所以这就是分布式的概念,在不同的服务器上分散部署不同的服务,这里需要区分分布式与集群的区别。集群我们一般讲都是把redis,MySQL集群,这里主要讲是把同一种服务分散部署,横向扩展,达到容灾和提升性能,而分布式讲究的不同服务,分散部署。

书接上回,在前面的开发中,我们已经完成了一整套的流程了,已经具备初步部署的条件了,现在我们就开准备spring cloud环境。 应广大不怕事儿大的吃瓜群众的要求,这里不使用eruka(因为eruka2.0的一系列问题),而改用consul。

consul

分布式绕不开的一个话题,服务注册、服务发现、服务治理,换句话说,你得让别人知道你在哪儿,死没死,怎么联系你。 而consul就是这样一套开源的分布式服务器发现、配置管理的系统,内置了服务注册和发现,分布式一致性协议,健康检查, key/value存储(redis?有点吊),多数据中心((⊙o⊙)… 不明所以),可视化ui,同时它有种运行模式server/client (哦,是不是客户端像服务端发送某些数据呢)。

服务注册

consul两种注册实现的方式,一种是服务自己调用consul提供的http api调用实现注册,spring cloud就是用的这种,另一种是通过json配置文件来实现注册,比如你要把mysql注册上去,就可以使用这种方式。

服务发现

服务发现也有两种方式,一种也是通过http api调用,另一种就是使用consul agent DNS。

consul安装

启动

./consul agent -server -bootstrap --bind=127.0.0.1 -client 0.0.0.0 -data-dir consul_data -ui

spring consul

现在开始spring cloud了,所以创建新工程cloud-work

org.springframework.boot

spring-boot-starter-parent

2.1.4.RELEASE

1.8

Greenwich.SR1

org.springframework.cloud

spring-cloud-dependencies

${spring-cloud.version}

pom

import

consul-discovery-client

创建consul-discovery-client模块,用户集成consul客户端。

org.springframework.cloud

spring-cloud-starter-consul-discovery

2.1.1.RELEASE

org.springframework.boot

spring-boot-starter-actuator

org.springframework.boot

spring-boot-starter-web

@EnableDiscoveryClient

@SpringBootApplication

public class DiscoveryApplication {

public static void main(String[] args) {

SpringApplication.run(DiscoveryApplication.class,args);

}

}

@EnableDiscoveryClient

@SpringBootApplication

public class DiscoveryApplication {

public static void main(String[] args) {

SpringApplication.run(DiscoveryApplication.class,args);

}

}

iot-pt改造

把consul-discovery-client打maven包,在iot-pt项目中引用,并加入spring cloud依赖。

cn.le

consul-discovery-client

0.0.1-SNAPSHOT

org.springframework.cloud

spring-cloud-dependencies

${spring-cloud.version}

pom

import

1.8

Greenwich.SR1

修改 coap-server

我们先拿coap-server实现,修改配置文件

coap.port=5683

coap.iot.byte=iot-byte

coap.iot.json=iot-json

spring.cloud.consul.host=127.0.0.1

spring.cloud.consul.port=8500

server.port=8090

server.servlet.context-path=/coap-server

spring.application.name=coap-server

#健康检查路径

spring.cloud.consul.discovery.health-check-path=

${server.servlet.context-path}/actuator/health

启动项目,打开consul管理页面

结束语

其它的iot-pt模块这是按照这种方式来搞,这里就不一一说明了。想了解更多关于consul的,点击https://www.cnblogs.com/duanxz/p/7053301.html ,笔者这里也借鉴了一丢丢(捂脸)。

java consul服务发现_分布式项目(七)consul 服务注册与发现相关推荐

  1. 分布式和微服务区别_分布式、集群、微服务到底有啥区别?

    点击上方"不太厉害的程序猿",选择"置顶或者星标" 你关注的就是我关心的! 来源说明:部分信息来源于csdn 概念: 集群是个物理形态,分布式是个工作方式. 1 ...

  2. ebs查看服务状态_浅析AWS KMS密钥管理服务

    AWS Key Management Service (AWS KMS) 是一个密钥管理服务,可以用来创建和管理您的主密钥,AWS KMS使用对称加密算法,即使用相同的算法和密钥来加密和解密数字数据. ...

  3. 亚马逊aws服务取消_亚马逊网络服务(AWS)

    亚马逊aws服务取消 Amazon Web Services (AWS) has been much a talk since more than a decade. The credit goes ...

  4. c#获取对象的唯一标识_在 Java 中利用 redis 实现分布式全局唯一标识服务

    作者: 杨高超 juejin.im/post/5a4984265188252b145b643e 获取全局唯一标识的方法介绍 在一个IT系统中,获取一个对象的唯一标识符是一个普遍的需求.在以前的单体应用 ...

  5. java restful中文乱码_使用RestTemplate访问RESTful服务乱码处理

    在接口服务开发中,我们经常用到Spring模板类RestTemplate访问restful服务.但RestTemplate处理中文乱码问题比较麻烦.以我们项目Spring版本4.1.3.RELEASE ...

  6. java 静态内部类 线程安全问题_单例模式的七种写法, 面试题:线程安全的单例模式...

    http://cantellow.iteye.com/blog/838473 http://meizhi.iteye.com/blog/537563 第一种(懒汉,线程不安全): Java代码  pu ...

  7. java个人介绍代码_个人项目WC(Java)

    1.WC项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数.单词 ...

  8. java中mvc事务_关于项目中的事务问题_JavaEE框架(Maven+SpringMvc+Spring+MyBatis)全程实战教程_Java视频-51CTO学院...

    SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring MVC 分离了控制器.模型对象.分派器以及处理程序对象 ...

  9. 统计java代码行数_统计项目代码行数

    今天测试告知需要项目的代码行数,项目怎么也有十万左右的代码行数,想想就想奔溃了, Eclipse一定有这方面的统计,应该也有统计工具,于是上网查了一番,果然找到了. 1.我要查询的文件类型为*.xml ...

最新文章

  1. hexde php_怎样在PHP中把16进制HEX数据转换为2进制数据呢?
  2. ETCD-节点挂掉会怎样?
  3. php计算机基础知识,计算机基础知识①
  4. OpenCV高级形态转换的实例(附完整代码)
  5. python爬取素材图片代码_基于Python爬取素材网站音频文件
  6. python计算圆周率_Python实现计算圆周率π的值到任意位的方法示例
  7. 全国计算机等级考试题库二级C操作题100套(第87套)
  8. python如何封装成可调用的库_Python实现打包成库供别的模块调用
  9. oracle删除一张表的sql语句,oracle删除表的语句
  10. CALayer 简单的使用
  11. linux安装oracle
  12. 西岛住宿软件测试,西岛踩坑记:寄存行李居然还要收费!听说要晋升5A,你觉得呢?...
  13. P3615 如厕计划
  14. POI导出echarts统计报表到Excel
  15. 威纶通触摸屏的自由口通讯
  16. TI-C2000-捕获模块ECAP应用-以欧姆龙E6B2-CWZ6C测速编码器为例
  17. vue3中播放视频和m3u8后缀的视频解决办法
  18. 得到《三体》听书笔记
  19. 51单片机C语言跑马灯,51单片机上实现控制跑马灯
  20. lcg_magic算法笔记:冒泡排序

热门文章

  1. 何谓 SQL 注入,这个漫画告诉你
  2. 保姆级带你深入阅读NAS-BERT
  3. 容器化时代到来!跳转机分配问题终于“有救”了
  4. 【华为云技术分享】实战笔记丨JDBC问题定位指南
  5. 【华为云技术分享】【测试微课堂】 有的放矢制定测试计划
  6. 【IoT最佳实践】设备获取实时天气DEMO代码解读
  7. Vue3+Vant+Vue-cli+Restful api实战—图书商城移动端
  8. easyphp 登陆mysql_EasyPHP/phpmyadmin 尝试连接到 mysql 服务器 但服务器拒绝连接
  9. windows绕开强制更新
  10. c++ 设置类型别名