Docker RabbitMQ单机安装
服务器环境操作系统:Ubuntu 16.04 x64 docker版本:18.09.7 docker-compose版本:1.8.0 说明: 本次实验,docker和docker-compose均使用apt安装。 确定当前用户已经加入到docker组如果没有,执行如下命令sudo gpasswd -a ${USER} docker,然后退出当前用户重新登录。 开始安装在服务器适当位置新建portainer文件夹 1mkdir -p ~/docker/rabbitmq 进入该文件夹,然后编写docker-compose.yml文件。 12cd ~/docker/rabbitmqvi docker-compose.yml 文件内容如下: 12345678910111213141516171819202122services: rabbitmq: restart: always image: rabbitmq:management container_name: dev.rabbitmq hostname: dev.rabbitmq volume...
Docker Redis单机安装
服务器环境操作系统:Ubuntu 16.04 x64 docker版本:18.09.7 docker-compose版本:1.8.0 说明: 本次实验,docker和docker-compose均使用apt安装。 确定当前用户已经加入到docker组如果没有,执行如下命令sudo gpasswd -a ${USER} docker,然后退出当前用户重新登录。 开始安装在服务器适当位置新建portainer文件夹 1mkdir -p ~/docker/redis 进入该文件夹,然后编写docker-compose.yml文件。 123cd ~/docker/redismkdir datavi docker-compose.yml 文件内容如下: 1234567891011121314151617181920version: '2.0'services: redis: restart: always image: redis container_name: dev.redis hostname: dev.redis comm...
跨FreeSWITCH的SIP呼叫
一般情况下,SIP通话很少在同一个FreeSWITCH实例内部,大多会跨FreeSWITCH进行通话(或者走中继线路),下面我们来看看如何实现跨FreeSWITCH通话。 写在前面的话本次实验涉及到了拨号计划的配置,为了避免原来默认的拨号计划干扰,建议将conf/dialplan下面的default.xml和public.xml备份,然后新建两个纯净的拨号计划。 本次实验中第二个FS使用的拨号计划如下: default.xml 12345678910111213141516171819<?xml version="1.0" encoding="utf-8"?><include> <context name="default"> <extension name="Local_Extension"> <condition field="destination_number" expression="^...
FreeSWITCH新增用户
配置文件说明FreeSWITCH的配置文件默认存放在/conf目录下,它由一系列的XML配置文件组成。最顶层的文件是freeswitch.xml,系统启动时它依次装入其他的XML并最终组成一个大的XML文件,其基本目录如下: 12345678910111213141516171819202122232425262728293031323334353637383940├── autoload_configs// 存放自动加载的配置文件│ ├── modules.conf.xml// 配置当fs启动时自动装载哪些模块│ └── *.xml// 一般来说,每个模块都有一个配置文件├── chatplan// 聊天计划│ └── default.xml├── dialplan// 拨号计划│ ├── default│ ├── default.xml// 默认拨号计划,一般用于内部用户路由│ ├── features.xml│ ├── public// 默认拨号计划,一般用于外部来话路由│ ├── public.xml│ ├── skinny-patte...
SIP电话连接FreeSWITCH
FreeSWITCH安装完毕之后,他默认提供了1000~1019共20个账户,我们可以随便挑选两个进行SIP电话测试,这些默认账户的默认密码都是1234。 PC端常用的SIP软件有MicroSIP,eyeBeam等,手机端(安卓)常用的SIP软件是Linphone。接下来我们就用这些软件进行电话测试。 PC端安装SIP软件我在PC端常用的SIP软件是MicroSIP,下载并安装完毕之后,可以看到如下界面: 在右上角,添加SIP账户(这里我们使用1002账户登录)并正确输入密码: 登录成功之后,可以看到如下界面: 测试: 在拨号界面输入9196,然后点「呼叫」,等待一会儿,我们就可以看到有通话时长了,这个时候对着话筒说话,就可以听到自己说的内容。 说明:9196是FreeSWITCH提供的回音测试号。 手机端安装SIP软件在手机上安装Linphone,然后在「设置」-「账户设置向导」中添加SIP账户。需要填写的内容和PC上的内容大体一致,在手机上,我们选用1004账户登录。 SIP账户登录成功之后,可以看到如下界面: 如果看到这个界面,说明基本配置已经完成了,接下来可以进...
FreeSWITCH安装
环境信息操作系统:Ubuntu 16.04 64 FreeSWITCH:1.6.20 安装过程本次实验,使用的是FreeSWITCH的1.6.20版本。 FreeSWITCH的官网:https://freeswitch.com FreeSWITCH的下载地址:https://files.freeswitch.org/freeswitch-releases/ 下载FreeSWITCH的安装文件: wget https://files.freeswitch.org/freeswitch-releases/freeswitch-1.6.20.-release.zip 新建app目录,并将FreeSWITCH解压到相应目录: 12mkdir -p ~/appunzip freeswitch-v1.6.20.zip -d ~/app 更新apt安装相关依赖 123apt updateapt-get install -y autoconf git libtool g++ zlib1g-dev libjpeg-dev libsqlite3-dev libcurl4-openssl-dev ...
SIP协议简介
Sip协议的全称是会话初始协议(Session Initiation Protocol),用于控制发起、修改、终结交互式多媒体会话的信令协议。在现在的通信领域,越来越多的电信供应商都在提供基于Sip协议的服务,比如市话、长途电话、即时消息、语音消息、多媒体会议等。 在传统的电话呼叫场景中,供应商使用的是模拟信号,通信的两端都是电话话机,使用Sip协议之后,所有的数据都是使用数据包的形式在互联网上传输,通信的两端不再是传统的话机,而是软件电话(简称软电话)。 SIP协议交互过程了解Sip协议交互过程之前,我们先来看看打电话的场景,假设A给B打电话,他们之间的交互一般是这样的: A给B拨号,邀请B接听电话; B的手机响铃,A同时可以听到响铃; B接听电话; A和B之间可以相互通话; B(或者A)挂断电话,通话结束; Sip协议的交互过程和上图所示的过程基本一致,但是在协议层面还是多了两步: 在B接听电话的时候,会给A发送一个OK消息,A收到OK之后,会回复一个ACK给B,然后A和B才开始通话; 在B挂断电话的时候,会给A发送一个BYE消息,A收到BYE消息之后,会回复一个OK...
Feign中传参使用的注解
今天遇到一个需求,需要异步导出一些数据到文件中,因为导出的数据量比较大,所以接收到导出请求之后,就将需要导出的数据的ID写入了MQ中,消费端接收到MQ的消息之后,然后通过Feign调用其他的服务进行数据导出。 通过Feign调用的代码如下: 12345678@FeignClient(name = ConstantsUtil.ORDER_SERVICE)public interface OrderService { @Headers({"feign: true"}) @PostMapping(value = "/orders/save") void save(@RequestParam("json") String json);} 开发的过程中,数据量比较少,通过此方法可以正常的完成调用,但是在测试环境,当数据量(json)稍微大一点之后,服务就无法调用了,直接报错了。 通过查询日志发现,Feign调用时,请求的地址居然是http://order.ser...
UML类图图例
UML类图主要描述的是两个类之间的关系,其中的关系由强到弱可以如下排序:组合>聚合>关联>依赖。 画图时按以下原则把握基本就不会画错: 实线关系一定强于虚线关系。 实心关系一定强于空心关系。 描述整体与部分关系一定要使用菱形图例。 继承与实现继承关系用实线空心箭头表示 实现关系用虚线空心箭头表示 依赖和关联依赖和关联都是描述了类与类之间的关系,依赖的关系相对而言弱一些,关联的关系相对而言强一些。 比如A类依赖B类,B类是A类某个方法中的一个参数,A类可以脱离B类单独存在,这种关系就比较弱。 如果A类关联B类,B类就是A类的一个属性,A类是不能脱离B类单独存在的,这种关系就比较强。 关联关系用实线单箭头表示 依赖关系用虚线单箭头表示 聚合和组合聚合和组合关系都是描述的整体与部分的关系,但是这其中还是有很大区别的。 聚合关系:个体可以脱离本体而独立存在。比如雁群和大雁就是聚合关系。 组合关系:整体可以控制个体的生命周期,即个体不能脱离整体而独立存在。比如鸟和翅膀就是组合关系。 聚合关系:用空心菱形+实线+单箭头表示 组合关系:用实心菱形+实线+单箭头表示
Hadoop集群搭建
环境信息: 192.168.1.200 hadoop000 (NN,DN,RM,NM,HIVE) 192.168.1.201 hadoop001 (DN) 192.168.1.202 hadoop002 (DN) 192.168.1.109 mysql000 (Hive使用的数据库) 准备工作修改hostnameCentOS修改hostname hostnamectl set-hostname xxx 修改hosts切换root用户,将三个节点的信息配置到/etc/hosts中 特别注意: 需要给本机也配置一个别名,比如上图是hadoop000机器,他的IP为200 localhost的配置一定要放在最后,这点特别要注意,否则可能造成无法连接的异常。 配置免密登录namenode:免密登录所有datanode datanode:免密登录自己 12ssh-keygen -t RSAssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@localhost 测试: ssh hadoop@localhost 登录成功则说明配置成功。 集群搭建为了保证...





