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…

dede mysql语句_让dede运行php代码和mysql语句

一、dede运行php代码举例1:{dede:name runphpyes}$str "hello ";me $str;me . "world";{/dede:name}结果:hello world说明:"name"为任意定义的名字,me 表示当前的值,也就是要输出最后…

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

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

c构造函数和析构函数_C ++构造函数和析构函数| 查找输出程序| 套装2

c构造函数和析构函数Program 1: 程序1&#xff1a; #include<iostream>using namespace std;class Sample{private:int X;int Y;public:Sample(int x, int y){X x;Y y;}void set(int x, int y){X x;Y y;}void print(){cout<<X<<" "<<Y&…

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

map()是 Python 内置的高阶函数&#xff0c;它接收一个函数 f 和一个 list&#xff0c;并通过把函数 f 依次作用在 list 的每个元素上&#xff0c;得到一个新的 list 并返回。 例如&#xff0c;对于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错误&#xff1a;请选择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工程师标准>>> 在渲染物体的时候&#xff0c;贴图常常是不可缺少的部分&#xff0c;贴图主要用于描述对象表面的物质形态&#xff0c;构造真实世界中自然物质表面的视觉表象。不同的贴图能给人带来不同的视觉感受&#xff0c;KeyShot3D…

python淘宝cookies抢购_Python实现淘宝秒杀聚划算抢购自动提醒源码

说明 本实例能够监控聚划算的抢购按钮&#xff0c;在聚划算整点聚的时间到达时发出提醒&#xff08;音频文件自己定义位置&#xff09;并自动弹开页面&#xff08;URL自己定义&#xff09;。 同时还可以通过命令行参数自定义刷新间隔时间&#xff08;默认0.1s&#xff09;和监控…

kadane算法_使用KADANE的算法求最大子阵列和

kadane算法What is a sub-array? 什么是子阵列&#xff1f; A sub-array is basically an arrays contiguous part. For example, if we have an array of integers [1,2,3] so the sub-arrays that we can form from the given array are [1], [2] , [3] , [1,2] , [2,3] , …

java汽车油耗计算_转发一个手机油耗计算器 (java)

今天在一个汽车论坛上看见的&#xff0c;试了试&#xff0c;还真不错。比以前那个Fuel Consumption 功能要强大,虽然都是JAVA软件。小罗盘手机计算器是作者独自产品策划、美术设计、程序开发、测试发布的手机应用软件&#xff0c;是为作者的一个朋友写的&#xff0c;当然我们用…

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

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

Linux的iptables常用配置范例(2)

iptables -F #清除所有规则 iptables -X #清除所有自定义规则 iptables -Z #各项计数归零 iptables -P INPUT DROP #将input链默认规则设置为丢弃 iptables -P OUTPUT DROP #将output链默认规则设置为丢弃 iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo …

aptitude 命令_C-命令行参数Aptitude问题与解答

aptitude 命令C programming Command Line Arguments Aptitude Questions and Answers: In this section you will find C Aptitude Questions and Answers on Command Line Arguments – Passing values with running programs, separate argument values, number of argument…

文件上传java逻辑_Java 文件上传 实例

import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;public class Upload {private String saveDir "."; // 要保存文件的路径private String contentType ""; // 文档类型private String charset "";…

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

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

dda算法_计算机图形学中的DDA(数字差分分析仪)算法

dda算法DDA(数字差分分析仪)算法 (DDA (Digital Differential Analyzer) Algorithm) In computer graphics, the DDA algorithm is the simplest algorithm among all other line generation algorithms. Here, the DDA is an abbreviation that stands for "Digital Diff…

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

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

c语言++数组名【数字】_C ++程序在数组中打印所有非重复数字

c语言数组名【数字】Problem statement: Write a C program to print all the non-repeated numbers in an array in minimum time complexity. 问题陈述&#xff1a;编写一个C 程序&#xff0c; 以最小的时间复杂度将所有未重复的数字打印在数组中 。 Input Example: 输入示例…

java最接近对点及距离_最接近点对问题_分治法

一、问题描述给定平面上的n个点&#xff0c;找其中的一对点&#xff0c;使得在n个点组成的所有点对中该点对间的距离最小。二、解题思路及所选算法策略的可行性分析思路&#xff1a;利用分治法来解决问题。递归子结构求最接近点对总体可分为几个步骤&#xff1a;1、当问题规模小…

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

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