当前位置: 首页 > 编程日记 > 正文

使用Mycat构建MySQL读写分离、主从复制、主从高可用

数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能。

从数据库的角度来说,对于大多数应用来说,从集中到分布,最基本的一个需求不是数据存储的瓶颈,而是在于计算的瓶颈,即SQL查询的瓶颈,我们知道,正常情况下,Insert SQL就是几十个毫秒的时间内写入完成,而系统中的大多数Select SQL则要几秒到几分钟才能有结果,很多复杂的SQL,其消耗服务器CPU的能力超强,不亚于死循环的威力。在没有读写分离的系统上,很可能高峰时段的一些复杂SQL查询就导致数据库服务器CPU爆表,系统陷入瘫痪,严重情况下可能导致数据库崩溃。因此,从保护数据库的角度来说,我们应该尽量避免没有主从复制机制的单节点数据库。

环境

最低环境需求

MySQL5.5及以上
Java JDK7及以上

主服务器环境

CentOS7.4.1708
MySQL5.6.40
Java JDK10.0.1
Mycat1.6

从服务器环境

CentOs7.2.1511
MySQL5.6.35

安装

主服务器安装

安装MySQL

本人使用的环境为自动部署上去的,其中已包含Mysql,所以关于MySQL 的单独安装请大家参考网上的教程。

安装Java JDK

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

点击 DOWNLOAD

同意协议,点击下载。

登录服务器,创建 Java JDK 安装目录

mkdir /usr/local/java

上传 JDK 至目录

解压 JDK 至当前目录

tar -zxvf jdk-10.0.1_linux-x64_bin.tar.gz

编辑配置文件,配置环境变量

vim /etc/profile添加如下内容:JAVA_HOME根据实际目录来
JAVA_HOME=/usr/local/java/jdk-10.0.1
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH

重启机器

sudo shutdown -r now

查看安装情况

java -version

安装Mycat

MyCAT有提供编译好的安装包,支持windows、Linux、Mac、Solaris等系统上安装与运行。

下载地址:http://dl.mycat.io/

这里我选择下载1.6版本:Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

上传 Mycat 至服务器 /usr/local

解压 Mycat 至当前目录

tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

移动安装包至 mycat 文件夹

mv Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz /usr/local/mycat/

创建用户并设置

useradd Mycat
chown -R Mycat.Mycat /usr/local/mycat/
passwd Mycat

mycat 文件夹目录说明

/usr/local/mycat
├── bin
├── catlet
├── conf
├── lib
├── logs
└── version.txt

目录解释如下:

bin 程序目录,存放了window版本和linux版本,除了提供封装成服务的版本之外,也提供了nowrap的shell脚本命令,方便大家选择和修改,进入到bin目录:

Linux下运行:./mycat console,首先要chmod +x *

注:mycat支持的命令{ console | start | stop | restart | status | dump }

conf目录下存放配置文件,server.xml是Mycat服务器参数调整和用户授权的配置文件,schema.xml是逻辑库定义和表以及分片定义的配置文件,rule.xml是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置文件修改,需要重启Mycat或者通过9066端口reload.

lib目录下主要存放mycat依赖的一些jar文件.

日志存放在logs/mycat.log中,每天一个文件,日志的配置是在conf/log4j.xml中,根据自己的需要,可以调整输出级别为debug,debug级别下,会输出更多的信息,方便排查问题.

注意:Linux下部署安装MySQL,默认不忽略表名大小写,需要手动到/etc/my.cnf 下配置 lower_case_table_names=1 使Linux环境下MySQL忽略表名大小写,否则使用MyCAT的时候会提示找不到表的错误!

增加环境变量

MyCAT在Linux中部署启动时,首先需要在Linux系统的环境变量中配置MYCAT_HOME,操作方式如下:

vi /etc/profile在文件中增加
export MYCAT_HOME=/usr/local/mycat

刷新环境变量

source /etc/profile

Mycat 集群配置

如果是在多台Linux系统中组建的MyCAT集群,那需要在MyCAT Server所在的服务器上配置对其他ip和主机名的映射,配置方式如下:

vi /etc/hosts例如:我有4台机器,配置如下:IP 主机名:192.168.100.2 sam_server_1192.168.100.3 sam_server_2192.168.100.4 sam_server_3192.168.100.5 sam_server_4

编辑完后,保存文件。

启动 Mycat

经过以上两个步骤的配置,就可以到 /usr/local/Mycat/bin 目录下执行:(先不要动配置文件)

./mycat start

即可启动mycat服务!

注:mycat支持的命令{ console | start | stop | restart | status | dump }

初次执行可以使用 ./mycat console 命令执行,这样有失败信息直接就能显示出来。

检验执行是否成功可以使用 ./mycat status

开放端口

如果开启防火墙需要开放8066/9066端口,9066和8066分别侦听管理员和应用程序的连接请求。

vim /etc/sysconfig/iptables添加:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8066 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9066 -j ACCEPT重启 iptables
systemctl restart iptables.service

从服务器安装

从服务器主要用到的是 MySQL,环境为自动部署上去的,其中已包含Mysql,所以关于MySQL 的单独安装请大家参考网上的教程。

配置MySQL主从复制

配置mysql端主从的数据自动同步,mycat不负责任何的数据同步问题。

关于 MySQL 主从复制的介绍我不多赘述,其中优缺点有兴趣的可以查阅相关资料。主要复制方式:

  • 基于SQL语句的复制(statement-based replication, SBR),
  • 基于行的复制(row-based replication, RBR),
  • 混合模式复制(mixed-based replication, MBR)。

基于SQL语句的方式最古老的方式,也是目前默认的复制方式,后来的两种是MySQL 5以后才出现的复制方式。

主服务器配置

登录MySQL,创建一个同步账号,并分配用户权限

CREATE USER 'AiMasterSlave'@'%' IDENTIFIED BY '123456';GRANT REPLICATION SLAVE ON *.* TO 'AiMasterSlave'@'%';

修改/etc/my.cnf

server-id = 2 # 每台服务器标识要唯一,不要设置为0,为0会拒绝所有链接log_bin = mysql-bin

重启Mysql

service mysqld restart

登录MySQL,查看二进制日志

show master status;

记录下来,一会要用到。

检查3306端口是否开放,如果没开放,开放端口,参考上面打开8066端口方法

从服务器配置

先别着急配置,尝试远程链接主服务器,检验一下

mysql -h192.168.1.45 -uAiMasterSlave -p123456

如果不能链接,请检验主服务器用户配置

修改/etc/my.cnf

server-id = 1
replicate_wild_do_table=master_slave_test.% # 同步库
replicate_wild_ignore_table=mysql.% # 排除库

重启Mysql

service mysqld restart

登录MySQL

stop slave;CHANGE MASTER TO
MASTER_HOST='192.168.1.45',
MASTER_USER='AiMasterSlave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000013',
MASTER_LOG_POS=680;start slave;

查看状态

show slave status \G;

如果上面两处都为 Yes 说明配置就没问题。为 NO 或者 connecting 请检查配置和防火墙设置是否准确。

测试主从复制

我在主服务器写的数据,从服务器会自动同步,说明配置生效。

配置Mycat读写分离

关于 Mycat 的详细配置说明,请到官网去查阅文档,太多了我就不搬过来了。资料下载:百度云

server.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/"><system><property name="useSqlStat">0</property>  <!-- 1为开启实时统计、0为关闭 --><property name="useGlobleTableCheck">0</property>  <!-- 1为开启全加班一致性检测、0为关闭 --><property name="sequnceHandlerType">2</property><!--  <property name="useCompression">1</property>--> <!--1为开启mysql压缩协议--><!--  <property name="fakeMySQLVersion">5.6.20</property>--> <!--设置模拟的MySQL版本号--><!-- <property name="processorBufferChunk">40960</property> --><!-- <property name="processors">1</property> <property name="processorExecutor">32</property> --><!--默认为type 0: DirectByteBufferPool | type 1 ByteBufferArena--><property name="processorBufferPoolType">0</property><!--默认是65535 64K 用于sql解析时最大文本长度 --><!--<property name="maxStringLiteralLength">65535</property>--><!--<property name="sequnceHandlerType">0</property>--><!--<property name="backSocketNoDelay">1</property>--><!--<property name="frontSocketNoDelay">1</property>--><!--<property name="processorExecutor">16</property>--><!--<property name="serverPort">8066</property> <property name="managerPort">9066</property> <property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property> <property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> --><!--分布式事务开关,0为不过滤分布式事务,1为过滤分布式事务(如果分布式事务内只涉及全局表,则不过滤),2为不过滤分布式事务,但是记录分布式事务日志--><property name="handleDistributedTransactions">0</property><!--off heap for merge/order/group/limit      1开启   0关闭--><property name="useOffHeapForMerge">1</property><!--单位为m--><property name="memoryPageSize">1m</property><!--单位为k--><property name="spillsFileBufferSize">1k</property><property name="useStreamOutput">0</property><!--单位为m--><property name="systemReserveMemorySize">384m</property><!--是否采用zookeeper协调切换  --><property name="useZKSwitch">true</property></system><!-- 全局SQL防火墙设置 --><!-- <firewall> <whitehost><host host="127.0.0.1" user="mycat"/><host host="127.0.0.2" user="mycat"/></whitehost><blacklist check="false"></blacklist></firewall>--><user name="mycat"><property name="password">123456</property><property name="schemas">TESTDB</property><property name="readOnly">false</property></user></mycat:server>
View Code

schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema><dataNode name="dn1" dataHost="aiMasterSlave" database="master_slave_test" /><dataHost name="aiMasterSlave" maxCon="1000" minCon="10" balance="3"writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- can have multi write hosts --><writeHost host="hostM1" url="192.168.1.45:3306" user="AiMasterSlave"password="123456"><!-- can have multi read hosts --><readHost host="hostS2" url="192.168.1.239:3306" user="aliyun" password="123456" /></writeHost></dataHost></mycat:schema>

测试读写分离

开启debug级别日志(生产环境不要一直设置日志级别为debug)

vi /usr/local/mycat/conf/log4j2.xml 

重启Mycat

使用本地 Shell 测试

检验物理数据库

数据已同步,说明没问题!

查看Mycat日志

可以看到读和写分别走两个服务器。至此,读写分离和主从配置完毕!

Mycat高可用方案

Mycat作为一个代理层中间件,Mycat系统的高可用涉及到Mycat本身的高可用以及后端MySQL的高可用。在大多数情况下,建议采用标准的MySQL主从复制高可用性配置并交付给Mycat来完成后端MySQL节点的主从自动切换。

应用强制走写/从

一个查询SQL语句以/*balance*/注解来确定其是走读节点还是写节点。 1.6以后添加了强制走读走写处理:

强制走从:/*!mycat:db_type=slave*/ select * from travelrecord 
/*#mycat:db_type=slave*/ select * from travelrecord 强制走写:
/*#mycat:db_type=master*/ select * from travelrecord /*!mycat:db_type=master*/ select * from travelrecord

根据主从延时切换

1.4开始支持MySQL主从复制状态绑定的读写分离机制,让读更加安全可靠,配置如下:

MyCAT心跳检查语句配置为 show slave status ,dataHost 上定义两个新属性: switchType="2" 与 slaveThreshold="100",此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制,Mycat心跳机制通过检测 show slave status 中的 "Seconds_Behind_Master", "Slave_IO_Running", "Slave_SQL_Running" 三个字段来确定当前主从同步的状态以及Seconds_Behind_Master主从复制时延, 当Seconds_Behind_Master>slaveThreshold时,读写分离筛选器会过滤掉此Slave机器,防止读到很久之前的旧数据,而当主节点宕机后,切换逻辑会检查Slave上的Seconds_Behind_Master是否为0,为0时则表示主从同步,可以安全切换,否则不会切换。

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native"switchType="2" slaveThreshold="100"><heartbeat>show slave status</heartbeat> <!-- can have multi write hosts --><writeHost host="hostM1" url="localhost:3306" user="root" password="123456"></writeHost><writeHost host="hostS1" url="localhost:3316" user="root" password="123456"/>
</dataHost>1.4.1 开始支持MySQL 集群模式,让读更加安全可靠,配置如下: MyCAT心跳检查语句配置为 show status like ‘wsrep%’ , dataHost 上定义两个新属性: switchType="3"
此时意味着开启MySQL集群复制状态状态绑定的读写分离与切换机制,Mycat心跳机制通过检测集群复制时延时,如果延时过大或者集群出现节点问题不会负载改节点。 <dataHost name="localhost1" maxCon="1000"
minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="3" ><heartbeat> show status like ‘wsrep%’</heartbeat><writeHost host="hostM1" url="localhost:3306" user="root" password="123456"></writeHost><writeHost host="hostS1" url="localhost:3316" user="root" password="123456"></writeHost>
</dataHost>

主从数据监控

关于主从监控(数据一致性,延迟监测),我使用的是 percona-toolkit

关于 percona-toolkit 的配置与使用,可以参考:http://www.cnblogs.com/kevingrace/p/6261091.html

转载于:https://www.cnblogs.com/bndong/p/9225064.html

相关文章:

SharePoint的Reporting Service Viewer Web Part

今天本来打算做一个专门用于Reporting Service报表浏览的SharePoint web part&#xff0c;记得在Reporting Service 2000下有一个viewer的Sample&#xff0c;就想找来参考一下&#xff0c;谁知在C:\Program Files\Microsoft SQL Server\90\Tools\Reporting Services\SharePoint…

7个面向对象常用原则的中英文名、别名、定义及显著特点

单一职责原则 英文名&#xff1a;Single Responsibility Principle(SRP) 别名&#xff1a;无 定义1&#xff1a;一个对象应该只包含单一的职责&#xff0c;并且该职责被完整地封装在一个类中 定义2&#xff1a;就一个类而言&#xff0c;应该仅有一个引起它变化的原因 开闭原则…

常见的“公共标志和说明”英文表达

1、Business Hours 营业时间  2、Office Hours 办公时间  3、Entrance 入口  4、Exit 出口  5、Push 推  6、Pull 拉  7、Shut 此路不通  8、On 打开 ( 放)  9、Off 关  10、Open 营业  11、Pause 暂停  12、Stop 关闭  13、Closed 下班  14、Menu 菜…

【T-SQL】基础——表别名

Som有时候我们需要为表设置别名&#xff0c;这样就可以方便的修改表。 如果在SSMS中&#xff0c;可以点击 Query-> SQL CMD mode --Set Alisa for the table:setvar tablename "[RetailDataWarehouse].[dbo].[FactUnit]" Select ExternalOrderId,COUNT(DISTINCT(R…

数据挖掘的实现流程

文章目录1.数据、信息与知识2.数据挖掘实现流程概览图3.数据准备(step 1)4.数据挖掘(step 2)5.模型的评估解释(step 3)6.知识运用(step 4)7.小结1.数据、信息与知识 2.数据挖掘实现流程概览图 这里提供两张图&#xff0c;以下讲解基于第一张图。 3.数据准备(step 1) Knowl…

设计模式:备忘录模式??

定 义&#xff1a;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态。 这样以后就可以将该对象恢复到原先保存的状态。 结构图&#xff1a; Originator(发起人):负责创建一个备忘录&#xff08;Memento&#xff09;&#xff…

如何用Python批量提取PDF文本内容?

本文为你展示&#xff0c;如何用Python把许多PDF文件的文本内容批量提取出来&#xff0c;并且整理存储到数据框中&#xff0c;以便于后续的数据分析。 问题 最近&#xff0c;读者们在后台的留言&#xff0c;愈发五花八门了。 写了几篇关于自然语言处理的文章后&#xff0c;一种…

常用的3种注入方式

构造注入 指通过构造函数来传入具体类的对象设值注入(Setter注入) 指通过Setter方法来传入具体类的对象接口注入 指通过在接口中声明的业务方法传入具体类的对象

WebService客户端添加SOAPHeader信息

WebService客户端添加SOAPHeader信息 通过JAXBContext创建Marshaller对头信息进行解析为dom&#xff0c;获取WSBindingProvider&#xff0c;使用Headers.creat()创建soap的Header元素&#xff1b; 另外就是&#xff1a;将user转换为dom是为了不在有wsdl生成的LicenceInfo类中增…

MATLAB 向量

MATLAB 向量&#xff1a; 1、MATLAB 行向量&#xff1a; 创建行向量括在方括号中的元素的集合&#xff0c;用空格或逗号分隔的元素。 2、MATLAB 列向量&#xff1a; 创建列向量括在方括号中的元素的集合&#xff0c;使用分号来分隔的元素。 3、

Wiki为什么会流行

我来开题&#xff0c;老段补充一下&#xff0c;嘿嘿。。。Wiki的优点&#xff1a;版本管理和版本比较多作者&#xff0c;多编辑的协作简洁Wiki的缺点(或者第一次用不是很习惯的地方)&#xff1a; 非所见即所得需要学习一下简单的语法文章的分类好像不是很地道所有的链接基本是自…

hung-yi lee_p18_图神经网络(cont.)

文章目录1. 简介2. 怎么把图喂到神经网络里面呢3. 为什么需要GNN4. 训练GNN遇到的问题5. 后面的内容安排6. GNN要做的事&#xff0c;常用数据集和基准7. 第一种实现GNN的方法(Spatial-based GNN)7.1 NN4G7.2 DCNN7.3 DGC7.4 MoNET番外&#xff1a;聚集的几种方法7.5 GAT7.5 GIN…

SQL Server2008附加数据库之后显示为只读

SQL Server2008附加数据库之后显示为只读时解决方法 啰嗦的话就不多说了&#xff0c;直入主题吧&#xff01; 方案一&#xff1a; 碰到这中情况一般是使用的sa账户登录的&#xff0c;只要改为Windows身份验证&#xff0c;再附加数据库即可搞定。 方案二&#xff1a; 使用sa登录…

java maven项目使用sonar审核代码

为什么80%的码农都做不了架构师&#xff1f;>>> 一、pom增加插件 <plugin><groupId>org.sonarsource.scanner.maven</groupId><artifactId>sonar-maven-plugin</artifactId><version>3.1.1</version> </plugin> 二…

ERP成功全球实施十大成功案例

、美铝公司&#xff08;Alcoa&#xff09; 公司简介 美铝公司创办于19世纪80年代中期&#xff0c;目前是世界最大的氧化铝、电解铝和铝加工产品的生产商&#xff0c;活跃于包括基础研究和开发、技术及回收利用等铝工业的所有主要领域。美铝产品应用于航空航天、汽车、包装、建筑…

CentOS安装Oracle全过程

1.准备工作 &#xff08;1&#xff09;安装Java环境 &#xff08;2&#xff09;增大SWAP空间 1.1 切换为root用户 1.2 dd if/dev/zero of/home/swap bs1024 count204800 1.3 /sbin/mkswap /home/swap 1.4 /sbin/swapon /home/swap 1.5 free -m 1.6 vi /etc/fstab 添加 /home/…

Hide the common top menu in Ubuntu 12.04

隐藏&#xff1a;1、sudo apt-get autoremove appmenu-gtk appmenu-gtk3 appmenu-qt2、reboot恢复&#xff1a;1、sudo apt-get install appmenu-gtk appmenu-gtk3 appmenu-qt2、reboot转载于:https://www.cnblogs.com/wiessharling/p/3569616.html

在IBatisNet中使用存储过程

其实在IBatisNet中使用存储过程应该很简单了&#xff0c;应为IBatisNet本来就是基于Sql Mapping的。想着Npetshop中应该有例子看一下就行了&#xff0c;可是查了查map文件&#xff0c;发现没有&#xff0c;只要自己动手搞搞了。 在建立的测试数据库中建立一个简单的存储过程del…

人工智能时代,教育如何做人工智能的“弄潮儿”?

汇新杯新兴科技互联网创新大赛报名火热进行中 汇新杯大赛报名入口&#xff1a;https://www.chuangcheng.org.cn/4552016年人工智能火了&#xff0c;它被行业公认为是继互联网、移动互联网之后的又一重大机遇和挑战&#xff0c;并将成为各个领域的“水电煤”&#xff0c;成为行业…

centOS安装Java环境全过程

1.通过ssh将安装包从本地传到/usr/local文件夹下 2.解压安装包 tar -zxvf /usr/local/jdk-**** 3.给解压后的文件夹改名 mv /usr/local/jdk1.8.0_271 /usr/local/java 4.修改配置文件&#xff0c;配置环境变量 vi /etc/profile export JAVA_HOME/usr/local/java export PAT…

vue组件的传参练习

为什么80%的码农都做不了架构师&#xff1f;>>> 首先是父组件与子组件沟通 父组件告诉子组件&#xff0c;“嘿&#xff0c;孩子&#xff0c;我有话和你说” 组件A代码 <template><section><h1>这是组件</h1><test-B :chile-name"u…

Avayaの初体验

这个题目是不是给了你一种无法抗拒的吸引力并引起了你无限的幻想呢&#xff1f;一个名为Avaya的清纯少女……Stop&#xff01;今天我要说的是电话交换机。说来惭愧&#xff0c;本来是个学通信的&#xff0c;到后来却不务正业搞了软件&#xff0c;到现在突然组织又需要我去搞Ava…

Git fetch和git pull的区别

原文&#xff1a;http://www.tech126.com/git-fetch-pull/ Git中从远程的分支获取最新的版本到本地有这样2个命令&#xff1a;1. git fetch&#xff1a;相当于是从远程获取最新版本到本地&#xff0c;不会自动merge git fetch origin master git log -p master..origin/mas…

powerdesigner中类图的内部类画法

点击一个已有类 点击1看到2 选择3 输入类名 右键类名选择Properties设置内部类的方法和参数 结果 如果在第二步里面找不到inner classfiers怎么办 自己添上

js获取页面属性

一些常用的页面属性获取&#xff1a; 网页可见区域宽&#xff1a;document.body.clientWidth;网页可见区域高&#xff1a;document.body.clientHeight; 类似视口宽度 网页正文全文宽&#xff1a;document.body.scrollWidth;网页正文全文高&#xff1a;document.body.scrollHeig…

jquery-12 折叠面板如何实现(两种方法)

jquery-12 折叠面板如何实现&#xff08;两种方法&#xff09; 一、总结 一句话总结&#xff1a;1、根据点击次数来判断显示还是隐藏&#xff0c;用data方法保证每个元素一个点击次数&#xff1b;2、找到元素的下一个&#xff0c;然后toggle实现显示隐藏。 1、toggle的两种用法…

上传图片并生成缩略图

前台<form id"Form1" method"post" runat"server" enctype"multipart/form-data"> <table id"Table1" cellpadding"1" cellspacing"1" width568 border"1"> …

物联网与互联网的6大区别

物联网互联网通过自动方式获取数据通过人工方式获取数据物联网是虚拟与现实的结合互联网构造了网络虚拟世界物联网是将计算机"装到"一切事务中在互联网时代把一切交给计算机去做物联网提供行业性服务互联网提供全球性公共信息服务物联网实现了信息世界与物理世界的融…

centoros 环境安装

1. nginx rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm yun install nignx 2.php yum install php yum install php-fpm 3. java yum list java* yum install java-1.7.0-openjdk.x86_64 转载于:https://www.cnblogs…

最优保险(三公子)

最优保险&#xff08;三公子&#xff09; 2018-06-29 1、消费型重疾险文章《6款消费型重疾险对比分析》、对标康惠保的一款良心产品 2、少儿重疾险文章《2款少儿重疾险对比分析》 3、定期寿险文章《4款定期寿险的对比分析》 4、医疗险文章《5款百万医疗险的对比分析》 5、意外险…