dcom配置_spring cloud 二代架构依赖组件 全配置放送

一 背景介绍

b1871d3ed47a50c76b61990a0573975c.png

先来看一下我们熟悉的第一代 spring cloud 的组件

273b474008a70c03438cdf4638e93635.png

spring cloud 现在已经是一种标准了,各公司可以基于它的编程模型编写自己的组件 ,比如Netflix、阿里巴巴都有自己的一套通过spring cloud 编程模型开发的分布式服务组件 。

Spring Cloud 二代组件

Spring Cloud Alibaba 主要包含 Sentinel、Nacos、RocketMQ、Dubbo、Seata 等组件。

二代引入了 Spring Cloud Alibaba

3482bbf0316a9f61e666efd6c2e39772.png

再加上我们常用的组件

605f1255513f746daf2dc0d839eb6885.png

这其有中除 spring cloud gateway都需要外部单独部署服务来支持

二 利用docker-compose 进行本地简化部署

apollo

version: '2'services:  apollo-quick-start:    image: nobodyiam/apollo-quick-start    container_name: apollo-quick-start    depends_on:      - apollo-db    ports:      - "8080:8080"      - "8070:8070"    links:      - apollo-db  apollo-db:    image: mysql:5.7    container_name: apollo-db    environment:      TZ: Asia/Shanghai      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'    depends_on:      - apollo-dbdata    ports:      - "13306:3306"    volumes:      - ./sql:/docker-entrypoint-initdb.d    volumes_from:      - apollo-dbdata  apollo-dbdata:    image: alpine:latest    container_name: apollo-dbdata    volumes:      - /var/lib/mysql

注意: ./sql下面的文件在这里(https://github.com/ctripcorp/apollo/tree/master/scripts/sql),是两个初始化的sql文件

nacos

version: "2"services:  nacos:    image: nacos/nacos-server:latest    container_name: nacos-standalone-mysql    env_file:      - ./env/nacos-standlone-mysql.env    volumes:      - ./standalone-logs/:/home/nacos/logs      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties    ports:      - "8848:8848"      - "9555:9555"    depends_on:      - mysql    restart: on-failure  mysql:    container_name: mysql    image: nacos/nacos-mysql:5.7    env_file:      - ./env/mysql.env    volumes:      - ./mysql:/var/lib/mysql    ports:      - "3308:3306"

redis

version: '2'services:  #redis容器  redis:    #定义主机名    container_name: redis    #使用的镜像    image: redis:6.0.8    #容器的映射端口    ports:      - 6379:6379    command: redis-server /etc/conf/redis.conf    #定义挂载点    volumes:      - ./data:/data      - ./conf:/etc/conf    #环境变量    privileged: true    environment:      - TZ=Asia/Shanghai      - LANG=en_US.UTF-8

注意: conf下的redis.conf配置文件可以找个默认的模版文件,然后进行相应修改

rocket-mq

version: '2'services:  #Service for nameserver  namesrv:    image: apacherocketmq/rocketmq-nameserver:4.5.0-alpine-operator-0.3.0    container_name: rmqnamesrv    ports:            - 9876:9876    volumes:           - ./data/namesrv/logs:/home/rocketmq/logs    command: sh mqnamesrv    environment:      TZ: Asia/Shanghai      JAVA_OPT_EXT: "-server -Xms512m -Xmx512m -Xmn256m"  #Service for broker  broker:    image: apacherocketmq/rocketmq-broker:4.5.0-alpine-operator-0.3.0    container_name: rmqbroker-a    depends_on:           - namesrv    ports:            - 10909:10909      - 10911:10911      - 10912:10912    environment:            NAMESRV_ADDR: namesrv:9876      JAVA_OPT_EXT: "-server -Xms512m -Xmx512m -Xmn256m"    volumes:            - ./data/broker/logs:/home/rocketmq/logs           - ./data/broker/store:/home/rocketmq/store            - ./data/broker/conf/broker.conf:/opt/rocketmq-4.7.1/conf/broker.conf    command: sh mqbroker -c /opt/rocketmq-4.7.1/conf/broker.conf #Service for another broker -- broker1  broker1:    image: apacherocketmq/rocketmq-broker:4.5.0-alpine-operator-0.3.0    container_name: rmqbroker-b    depends_on:           - namesrv    ports:            - 10929:10909      - 10931:10911      - 10932:10912    environment:            NAMESRV_ADDR: namesrv:9876      JAVA_OPT_EXT: "-server -Xms512m -Xmx512m -Xmn256m"    volumes:            - ./data1/broker/logs:/home/rocketmq/logs            - ./data1/broker/store:/home/rocketmq/store            - ./data1/broker/conf/broker.conf:/opt/rocketmq-4.7.1/conf/broker.conf    command: sh mqbroker -c /opt/rocketmq-4.7.1/conf/broker.conf  rmqconsole:    image: styletang/rocketmq-console-ng    container_name: rmqconsole    ports:      - 8180:8080    environment:        TZ: Asia/Shanghai        JAVA_OPTS: "-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"    depends_on:      - namesrv

此外还有两个配置文件

  • ./data/broker/conf/broker.conf
  • ./data1/broker/conf/broker.conf
## ./data/broker/conf/broker.confbrokerClusterName = DefaultClusterbrokerName = broker-abrokerId = 0deleteWhen = 04fileReservedTime = 48brokerRole = ASYNC_MASTERflushDiskType = ASYNC_FLUSH### ./data1/broker/conf/broker.confbrokerClusterName = DefaultClusterbrokerName = broker-bbrokerId = 0deleteWhen = 04fileReservedTime = 48brokerRole = ASYNC_MASTERflushDiskType = ASYNC_FLUSH

seata-server

version: "3.1"services:  seata-server:    image: seataio/seata-server:latest    hostname: seata-server    ports:      - 8091:8091    environment:      - SEATA_PORT=8091    expose:      - 8091

sentinel

  • 没有现成的docker镜像,需要自己编写一个
FROM openjdk:8#复制上下文目录下的jar包到容器里  使用COPY命令亦可ADD sentinel-dashboard-1.8.0.jar sentinel-dashboard-1.8.0.jarEXPOSE 8080#指定容器启动程序及参数    ""ENTRYPOINT ["java","-jar","sentinel-dashboard-1.8.0.jar"]
  • 利用自己编译的镜像再编写docker-compose配置文件
version: '3'services:  sentinel-dashboard:    image: sentinel-dashboard:1.8.0    container_name: sentinel-dashboard    restart: always    environment:      JAVA_OPTS: "-Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -Djava.security.egd=file:/dev/./urandom -Dcsp.sentinel.api.port=8719"    ports: #避免出现端口映射错误,建议采用字符串格式 8080端口为Dockerfile中EXPOSE端口      - "58080:8080"      - "8719:8719"    volumes:      - ./root/logs:/root/logs

xxl-job

version: '3'services:  xxl-job-admin:    image: xuxueli/xxl-job-admin:2.2.0    restart: always    container_name: xxl-job-admin    depends_on:      - mysql    environment:      PARAMS: '--spring.datasource.url=jdbc:mysql://mysql:3306/xxl_job?Unicode=true&characterEncoding=UTF-8 --spring.datasource.username=root --spring.datasource.password=root'    ports:      - 8067:8080    volumes:      - ./data/applogs:/data/applogs

注意: 这时引用的数据库是你现有的mysql,找一个现有的,因为为了它再新建一个容器有点儿浪费

prometheus(altermanager+prometheus+grafana)

version: '3'services:  prometheus:    image: prom/prometheus:latest    container_name: prometheus    volumes:      - /opt/docker_compose/monitor/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml      - /opt/docker_compose/monitor/prometheus/alertmanager_rules.yml:/etc/prometheus/alertmanager_rules.yml    ports:      - 9090:9090    command:      - '--config.file=/etc/prometheus/prometheus.yml'  grafana:    image: grafana/grafana    container_name: grafana    restart: always    hostname: grafana    volumes:      - /opt/docker_compose/monitor/grafana/grafana.ini:/etc/grafana/grafana.ini    ports:      - "3000:3000"      alertmanager:    image: prom/alertmanager:latest    container_name: alertmanager    hostname: alertmanager    restart: always    volumes:      - /opt/docker_compose/monitor/altermanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml    ports:      - "9093:9093"    prometheus-webhook-alert:    image: timonwong/prometheus-webhook-dingtalk:v1.3.0    container_name: prometheus-webhook-alertmanagers    hostname: webhook-alertmanagers    restart: always    volumes:      - /opt/docker_compose/monitor/prometheus-webhook-dingtalk/config.yml:/etc/prometheus-webhook-dingtalk/config.yml      - /etc/localtime:/etc/localtime    ports:      - "8060:8060"    entrypoint: /bin/prometheus-webhook-dingtalk   --config.file=/etc/prometheus-webhook-dingtalk/config.yml  --web.enable-ui

这里我的alter没有用grafana的,而是结合altermanager和 prometheus-webhook-dingtalk实现的钉钉告警。关于prometheus、altermanager、grafana都是常规配置大家可以找模板然后根据自己的需求修改,唯一需要说明的就是prometheus-webhook-dingtalk,虽然github上说明可以配置通知模版,但最新版本的,我怎么修改也不成,是个问题。 需要观察以后版本会不会好,或者直接上手改它的go代码。

skywalking

version: '3.3'services:  elasticsearch:    image: docker.elastic.co/elasticsearch/elasticsearch:7.5.0    container_name: elasticsearch    restart: always    ports:      - 9200:9200      - 9300:9300    environment:      - discovery.type=single-node      - bootstrap.memory_lock=true    network_mode: bridge    volumes:      - /data/docker_compose/skywalking/es/config/jvm.options:/usr/share/elasticsearch/config/jvm.options:rw      - /data/docker_compose/skywalking/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml      - /data/docker/elk/elk_elastic/data:/usr/share/elasticsearch/data:rw    ulimits:      memlock:        soft: -1        hard: -1  oap:    image: apache/skywalking-oap-server:8.1.0-es7    container_name: oap    depends_on:      - elasticsearch    links:      - elasticsearch    network_mode: bridge    restart: always    ports:      - 11800:11800      - 12800:12800    environment:      SW_ES_USER: elastic      SW_ES_PASSWORD: oasises      SW_STORAGE: elasticsearch7      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200      SW_TRACE_SAMPLE_RATE: 8000  ui:    image: apache/skywalking-ui:8.1.0    container_name: ui    network_mode: bridge    depends_on:      - oap    links:      - oap    restart: always    ports:      - 8083:8080    environment:      SW_OAP_ADDRESS: oap:12800

注意: es的详细配置文件需要你自己写哈。

kibana(ELK)

version: '2'services:  elk-logstash:    image: docker.elastic.co/logstash/logstash:7.5.0    container_name : elk_logstash    hostname: elk_logstash    stdin_open: true    tty: true    ports:      - "5000:5000/udp"      -  5001:5001    command: logstash --path.settings /etc/logstash -f /etc/logstash/conf.d/logstash.conf    external_links:      - elasticsearch    network_mode: bridge    volumes:      - /data1/docker/elk/elk_logstash/conf.d:/etc/logstash/conf.d      - /data1/docker/elk/elk_logstash/heapdump.hprof:/usr/share/logstash/heapdump.hprof -rw      - /data1/docker/elk/elk_logstash/gc.log:/usr/share/logstash/gc.log -rw  elk-kibana:    image: docker.elastic.co/kibana/kibana:7.5.0    container_name : elk_kibana    hostname: elk_kibana    stdin_open: true    tty: true    ports:      - 5601:5601    external_links:      - elasticsearch    network_mode: bridge    volumes:        - /data1/docker/elk/elk_kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml     environment:      - ELASTICSEARCH_URL=http://elasticsearch:9200
  • 由于ES一般我们会建集群,这里忽略ES容器
  • logstash和kibana的相关配置也可从官网找到模版进行修改

关注公众号 "小盒子的技术分享" 获取更多精彩内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

olap 多维分析_OLAP(在线分析处理)| OLAP多维数据集和操作

olap 多维分析In the previous article of OLAP, we have seen various applications of OLAP, Various types of OLAP, advantages, and disadvantages of OLAP. In this article, we will learn about the, 在OLAP的上一篇文章中,我们了解了OLAP的各种应用&#x…

每周一书-2016年8月28日到9月4日获奖读者公布

每周一书-2016年8月28日到9月4日获奖读者公布 上次送出的《Bootstrap基础教程》,已经被幸运者收到了。我们先来回顾下《改善C程序代码的125个建议》活动文章下的精彩留言。 这是一段高屋建瓴的评述,足见作者对C语言的了解和热爱层度,当然也得…

python map函数的作用_Python的map函数

map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。 例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9] 如果希望把list的每个元素都作平方&#xf…

idea java no sdk_java - intelliJ IDEA 13错误:请选择Android SDK

java - intelliJ IDEA 13错误:请选择Android SDK我已经在Error: Cannot find any configured Android SDK上安装了intelliJ 12.1.2和Error: Cannot find any configured Android SDK。现在我使用intelliJ 13.0.1创建了一个空的android应用程序项目(也使用模拟器作为…

该怎样在KeyShot中进行贴图

2019独角兽企业重金招聘Python工程师标准>>> 在渲染物体的时候,贴图常常是不可缺少的部分,贴图主要用于描述对象表面的物质形态,构造真实世界中自然物质表面的视觉表象。不同的贴图能给人带来不同的视觉感受,KeyShot3D…

6.dubbo常用的xml配置有哪些_【面试篇】必须掌握的Spring 常用注解

阅读文本大概需要5分钟。注解本身没有功能的,就和 xml 一样。注解和 xml 都是一种元数据,元数据即解释数据的数据,这就是所谓配置。本文主要罗列 Spring|Spring MVC相关注解的简介。Spring部分1、声明bean的注解Component 组件,没…

matlab数值计算pdf_Gnuplot科学绘图(九)——栅格以及方程数值解估算

Gnuplot科学绘图系列内容Gnuplot科学绘图(一)——从安装到简单函数绘图(文末有彩蛋)Gnuplot科学绘图(二)——坐标取值范围及刻度(文末有彩蛋)Gnuplot科学绘图(三)——点线风格Gnuplot科学绘图(四)——多组数据绘图Gnuplot科学绘图(五)——输出eps 图片Gnuplot科学绘图(六)——输…

购物商城框架java_基于jsp的购物商城-JavaEE实现购物商城 - java项目源码

基于jspservletpojomysql实现一个javaee/javaweb的购物商城, 该项目可用各类java课程设计大作业中, 购物商城的系统架构分为前后台两部分, 最终实现在线上进行购物商城各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类购物商城相关的实体进行管理。该购物…

python return用法_初学Python要了解什么 装饰器知识汇总有哪些

初学Python要了解什么?装饰器知识汇总有哪些?在Python学习过程中,有多种方法对函数和类进行加工,相对于其它方式,装饰器语法简单,代码可读性高。因此,装饰器在Python项目中有广泛的应用&#xf…

串口通信 校验码_一文读懂S7-200 SMART自由口通信!

学习S7-200 SMART时了解到,基于RS485接口可实现一下几种通信:1)modbus RTU通信2)PPI协议通信3)USS协议通信4)自由口通信何为自由口通信呢?前三种通信必须要PLC和与其通信的设备支持相同的通信协…

hbase 学习(十三)集群间备份原理

集群建备份,它是master/slaves结构式的备份,由master推送,这样更容易跟踪现在备份到哪里了,况且region server是都有自己的WAL 和HLog日志,它就像mysql的主从备份结构一样,只有一个日志来跟踪。一个master集…

python expect模块_Python基础教程:用Python怎么telnet到网络设备

Python基础教程:用Python怎么telnet到网络设备0.前言Telnet协议属于TCP/IP协议族里的一种,对于我们这些网络攻城狮来说,再熟悉不过了,常用于远程登陆到网络设备进行操作,但是,它的缺陷太明显了,…

Java实现动态加载页面_[Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新)...

[Java教程]动态加载页面数据的小工具 javascript jQuery (持续更新)0 2014-05-07 18:00:06使用该控件,可以根据url,参数,加载html记录模板(包含json参数对应,以及具体记录位置Index根据参数描述加载对应的属性,并可以…

pygame render怎么显示中文_PyGame开发游戏(2D)02.基础图元

这节将介绍PyGame的基础架构。并学习如何在PyGame里绘制各种几何图形和显示加载图片。01.应用框架上一节的示例程序里,我们用到一个PyGame的应用程序框架。这是一个基础框架,利用它我们可以很轻松的添加各类图型绘制,键盘鼠标输入处理和各类逻…

word+增加水印+java_为Word2019文档添加水印的两种方法

水印的类型包括文字水印和图片水印两种。在Word文档中添加文字水印时,可以使用程序中预设的水印效果,而图片水印则需要自定义添加。一、使用程序预设的文字水印Word 2019中预设了机密、紧急、免责声明三种类型的文字水印,用户可根据文件的类型…

如何设置CentOS 7获取动态及静态IP地址

自动获取动态IP地址1.输入“ip addr”并按回车键确定,发现无法获取IP(CentOS 7默认没有ifconfig命令),记录下网卡名称(本例中为ens33)。2.输入“cd /etc/sysconfig/network-scripts/”按回车键确定,继续输入“ls”按回…

请求列出指定服务器上的可用功能失败_滥用 ESI 详解(上)

在进行安全性评估时,我们注意到了标记语言 Edge Side Includes (ESI)中的一个意外行为,这种语言用于许多流行的 HTTP 代理(反向代理、负载平衡器、缓存服务器、代理服务器)。我们发现成功的 ESI 攻击可以导致服务器端请求伪造(SSRF)、各种绕过 HTTPOnly …

openstack nova-network 的小bug的排错经历

环境是 nova-network vmwareflatdhcp错误表现为 开出来的虚拟机有一定几率获取不到dhcp地址,手工赋予ip则正常,用flat模式注入的ip正常,下面是排错过程1首先找网络防火墙已经把 dnsmasq对应的端口已经打开抓包结果:可以看到虚拟机…

anaconda base环境_anaconda中安装packages:pip还是conda install?

conda install我就不说了,这都不会别学了就。Using command:$ which -a pip, the terminal will return:This indicates two different pip path to install packages[1].在tf23环境中pip install在base环境中pip install在windows下powershell内,进入到…

【风马一族_xml】xmlp之dtd1

什么是XML约束?在xml技术里,可以编写一个文档来约束一个xml文档的写法,这称之为xml约束 2. 为什么要使用xml约束? 参看提示栏 3. xml约束的作用? 约束xml的写法对xml进行校验4. 常见的xml约束技术 xml dtdxml Schema…