精华内容
下载资源
问答
  • 计算机网络期末复习1
    千次阅读
    2020-08-05 19:00:27

    思科交换机配置指令

    指令简写功能
    enableen进入特权模式
    configure terminalconfig t配置模式
    hostname xxxxho xxx交换机命名
    interface f0/0int f0/0f0/0 接口配置模式
    no shutdownn sh开启端口
    exitex退出

    0x01配置使能密码

    switch> en
    switch# config t
    switch(conf)# ho xxx
    xxx(conf)#enable password cisco
    

    0x02配置vlan

    Switch>en
    Switch#config t
    Enter configuration commands, one per line.  End with CNTL/Z.
    Switch(config)#vlan 2
    Switch(config-vlan)#ex
    Switch(config)#int rang fastEthernet 0/13 - 24
    Switch(config-if-range)#switchport access vlan 2
    Switch(config-if-range)#ex
    Switch(config)#ex
    Switch#
    %SYS-5-CONFIG_I: Configured from console by console
    
    Switch#show vlan
    
    VLAN Name                             Status    Ports
    ---- -------------------------------- --------- -------------------------------
    1    default                          active    Fa0/1, Fa0/2, Fa0/3, Fa0/4
                                                    Fa0/5, Fa0/6, Fa0/7, Fa0/8
                                                    Fa0/9, Fa0/10, Fa0/11, Fa0/12
    2    VLAN0002                         active    Fa0/13, Fa0/14, Fa0/15, Fa0/16
                                                    Fa0/17, Fa0/18, Fa0/19, Fa0/20
                                                    Fa0/21, Fa0/22, Fa0/23, Fa0/24
    1002 fddi-default                     act/unsup 
    1003 token-ring-default               act/unsup 
    1004 fddinet-default                  act/unsup 
    1005 trnet-default                    act/unsup 
    
    VLAN Type  SAID       MTU   Parent RingNo BridgeNo Stp  BrdgMode Trans1 Trans2
    ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------
    1    enet  100001     1500  -      -      -        -    -        0      0
    2    enet  100002     1500  -      -      -        -    -        0      0
    1002 fddi  101002     1500  -      -      -        -    -        0      0   
    1003 tr    101003     1500  -      -      -        -    -        0      0   
    1004 fdnet 101004     1500  -      -      -        ieee -        0      0   
    1005 trnet 101005     1500  -      -      -        ibm  -        0      0   
    
    Remote SPAN VLANs
    ------------------------------------------------------------------------------
    
    
    Primary Secondary Type              Ports
    ------- --------- ----------------- ------------------------------------------
    Switch#
    

    如何计算划分子网后共损失的IP地址个数

    一个单位申请了一个192.168.1.0的C类网址,试将其划分为6个逻辑子网,(子网位全1,全0的不用)并完成如下要求:

    1). 计算划分子网后共损失的IP地址个数

    • 划分6个子网:
      • 计算划分多少网络位

        • 因为全零全一不用,所以计算子网位数公式
        • (2^n)-2>=6 ==> n=3 即 掩码为:11100000
      • 计算每个网络位有多少ip:

        • ip数=(2^(主机位数)-2)=(2^5)-2=30
      • 计算全部有效的ip数减去254:

        • 全部有效的ip数=30*6=180
        • 损失ip数=254-180=74

    2). 写出各个子网的开始与结束IP地址

    • 主机位全0和全1不用

    • 第一个子网开始网地址为:00100001(32)

    • 第一个子网结束网地址为:00111110(62)

    • 所以第一个子网地址从192.168.1.33-192.168.1.62

    ​ 其他的依此类推

    (3). 写出子网的子网掩码

    • 网络位为3所以最后一组掩码为(11100000)即224

    • 所以掩码为255.255.255.224


    vlan优点及功能

    优点

    1. 简化网络管理
    2. 控制网络风暴
    3. 增强网络安全性

    功能

    管理员可以通过逻辑配置来建立多个逻辑上独立的虚拟网络,交换机就可以很方便的实现虚拟局域网


    题目

    • 计算机网络系统具有丰富的功能,其中最重要的是 通信资源共享

    • 计算机网络就是用通信线路和 通信设备 将分布在不同地点的具有独立功能的多个计算 机系统相互连接起来,在网络软件的支持下实现彼此之间的数据通信和资源共享的系统。

    • 目前常用的网络连接器主要有中继器、网桥、 路由器 和 网关

    • 与 Internet 相连的每台计算机都必须指定一的(唯一)地址,称为 IP 地址

    • 目前,局域网的传输介质主要有双绞线、 同轴电缆 和光纤。

    • 电子邮件地址一般由 用户名 和主机域名组成。

    • 当数据报在物理网络中进行传输时,IP 地址被转换成 MAC地址

    • 由于各种网络的最大传输单元(MTU)不同,用路由器互联时必须对数据包进行 分段重组

    • 共享型以太网采用 CSMA/CD 媒体访问控制技术。

    • 常用的两种多路复用技术为 频分时分 ,其中,前者是同一时间同时传送多路信号, 而后者是将一条物理信道按时间分成若干个时间片轮 流分配给多个信号使用。

    • OSI 的会话层处于 传输层 提供的服务之上,为 表示层 提供服务。

    • 在 TCP/IP 层次模型中与OSI参考模型第四层(运输层)相对应的主要协议有 TCP和UDP ,其中后者提供无连接的不可靠传输服务。

    • 在 TCP/IP 层次模型的第三层(网络层)中包括的协议主要有 IP、ICMP、ARP 及 RARP

    • 局域网的数据链路层被划分成 MAC和LLC 两个功能子层。

    • 计算机网络技术是 计算机技术通信技术 技术的结合。

    • 通信系统中,称调制前的电信号为 基带 信号,调制后的信号为调制信号.

    • IP 地址是网际层中识别主机的 地址是网际层中识别主机的 逻辑 地址

    • IP 地 址 共 分 五 类 ,其 中 :A 类IP 地 址 表 示 范 围 是 1.0.0.1-126.255.255.254

    • 在数据链路层,为了实现透明传输,采用 字节(符)填充法或零比特填充法 使一帧中首尾两个标志字段之间不会出现与标志字段相同的比特流。

    • IP 地址由 网络标识主机标识 两部分组成。常用的 IP 地址的**A、B、C**三类。

    • 中继器、HUB、STP线 是物理层设备; 网卡、网桥、交换机 是数据链路层设备; 路由器 是网络层设备

    • 以下数据形式, 比特流(Bit) 是物理层的; 数据帧(Frame) 是数据链路层的; 数据包(Packet) 是网络层的; 数据段(Segment) 是传输层的。

    • 决定局域网特性的主要技术要素是:网络拓扑、传输介质和 介质访问控制方法

    • 下列哪个MAC地址是正确的( D )

      A) 00-16-5B-4A-34-2H B)192.168.1.55 
      C) 65-10-96-58-16 D) 00-06-5B-4F-45-BA

      MAC地址采用十六进制数表示,共六个字节(48位)

    • 交换机端口可以分为半双工与全双工两类。对于100Mbps的全双工端口,端口带宽为200Mbps

    • 以太网交换机工作在OSI的 数据链路层 ,并按照 数据包中的MAC地址 来进行信息转发的决策。它的三种交换模式是碎片丢弃(FragmentFree)交换、 直通交换和存储转发交换 。以太网交换机上的每个端口可以绑定一个或多个 MAC地址 。当两台交换机级连时,如果下级交换机有Uplink口,则可用 直连线 连接到该端口上。

    • 下面有几个关于局域网的说法,其中不正确的是**(B)**。
      A)局域网是一种通信网 B)连入局域网的数据通信设备只包括计算机
      C)局域网覆盖有限的地理范围 D)局域网具有高数据传输率

      在OSI的体系结构中,一个通信子网只有最低的三层。而局域网的体系结构也只有OSI的下三层,没有第四层以上的层次。所以说局域网只是一种通信网。

    • TCP/IP参考模型由 互联网网络层、网络接口层、传输层、应用层 构成

    • 术语“CSMA/CD-带冲突检测的载波侦听多路访问”简要描述了 IEEE802.3 标准的工作机制。


    ip协议是哪一层的协议

    IP协议对应于OSI标准模型的网络层。
    TCP/IP:
    数据链路层:ARP,RARP
    网络层: IP,ICMP,IGMP
    传输层:TCP ,UDP,UGP
    应用层:Telnet,FTP,SMTP,SNMP.
    OSI:
    物理层:EIA/TIA-232, EIA/TIA-499, V.35, V.24, RJ45, Ethernet, 802.3, 802.5, FDDI, NRZI, NRZ, B8ZS
    数据链路层:Frame Relay, HDLC, PPP, IEEE 802.3/802.2, FDDI, ATM, IEEE 802.5/802.2
    网络层:IP,IPX,AppleTalk DDP
    传输层:TCP,UDP,SPX
    会话层:RPC,SQL,NFS,NetBIOS,names,AppleTalk,ASP,DECnet,SCP
    表示层:TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption,MPEG,MIDI,HTML
    应用层:FTP,WWW,Telnet,NFS,SMTP,Gateway,SNMP

    转载地址:https://www.cnblogs.com/csnd/p/12567696.html


    个人博客地址:http://www.lu0sf.top

    更多相关内容
  • 入门可以看看如下的几个选项: -i 指定网络接口-e 打印数据链路层头-s 抓取每个包的字节-n 避免DNS解析-w 写入文件-r 从文件读取-v,-vv,-vvv 详细输出 抓取过滤器的表达式: 关键字: 源目主机,源目端口,tcp,...

    概述

    很多朋友私信问关于linux有哪些性能监控工具,所以整理了这方面内容,下面分享下给大家。

    工具功能概览

    整理了一个关于监控工具及其功能的表。下面对这些工具单独详细介绍。

    469218183f21bf46507b1657fa6bb423.png

    Linux性能监控工具

    top

    top命令会展示进程的实际活动。默认情况下,它会列出系统上所有cpu密集型任务,并且每5秒钟刷新一次列表。可以对PID(数值),生存时间(最新的排最前面),时间(累计时

    间)以及常驻内存使用率和时间(进程启动开始占用cpu的时间)进行排序。

    26ffbe88c0ce82775e74b80274291ddd.png

    输出中的各列:

    PID 进程号USER 进程所有者的名字。PRI 进程优先级NI nice级别SIZE 进程使用的内存(代码、数据和栈),kb单位RSS 物理RAM使用量,kb单位SHARE 和其它进程共享的内存,kb单位STAT 进程状态:S=睡眠,R=运行,T=停止或跟踪,D=不可中断的睡眠,Z=僵尸。%CPU CPU使用量。%MEM 物理内存用量TIME 进程使用的总CPU时间(从启动开始算)COMMAND 进程的命令行启动命令(包括参数)

    vmstat

    vmstat显示关于进程,内存,页,块I/O,traps和CPU的信息。vmstat既可以展示平均值,也

    可以是实时数据。通过提供采样频率和采样时间就可以开启vmstat的采样模式。

    5e51347566b354f2171b434a4afe5b90.png

    各列的含义如下:

    进程

    r:等待执行时间的进程数b:在不可中断睡眠中的进程数

    内存

    swpd:已使用的虚拟内存量free:空闲内存量buff:作为缓冲的内存cache:作缓存的内存

    Swap

    si:从交换分区写到内存的量so:从内存写到交换分区的大小

    IO

    bi:发往块设备的数目(blocks/s)bo:从块设备接收的块数目 (blocks/s)

    System

    in:每秒钟的中断次数,包括时钟cs:每秒的上下文切换次数

    CPU(总CPU时间的百分比):

    us:运行非内核代码的时间(用户时间,包括nice时间)sy:运行内核代码的时间(系统时间)id:空闲时间,早先的Linux2.5.41版本,包含了I/O等待时间wa:等待IO的时间,早先的Linux2.5.41版本,这个值为0

    uptime

    uptime 命令可以用来查看服务器运行了多长时间,有多少用户登录在服务器上,以及服务器的平均负载。分别展示过去1分钟、5分钟和15分钟的系统瓶颈负载值。

    平均负载最理想的值是1,意味着每个进程可以直接使用CPU,没有发生CPU周期丢失。不同系统的负载有很大差别。对单处理器工作站来说,1或2的负载值是勉强可以接受的,而在多

    处理器服务器上,平均负载为8或者10的时候,系统依旧运行良好。

    使用uptime或许可以找出服务器或网络的问题。例如,当网络服务运行不佳时,你就可以用uptime命令查看系统负载情况。如果负载不高,问题可能出现在你的网络中,而不是服务器系统上。

    417306a55486ebbff79300bff7350f98.png

    ps 和 pstree

    在系统分析中,ps和pstree是最基础的命令,ps有三种不同的命令选项,UNIX、BSD和GNU

    风格。

    ps命令展示所有进程列表。top命令展示了进程活动,而且ps显示的信息更加详细。ps所显示

    出来的进程数量取决于所使用的命令参数。简单的ps -A命令会列出所有的进程和他们各自的

    PID,我们可以使用PID做更多的事情。在使用pmap,renice等工具的时候,就需要用到

    PID。

    在运行java应用的服务器上,使用ps -A命令可能一下子就把显示器全部占满了,很难清楚查

    看运行进程的完整列表。在这个情况下,pstree命令可能就会派上用场,它把运行进程以树形

    结构展示,把子进程合并展示(例如java线程)。

    b7c681d7feae3517737a405784c2ca43.png

    其它的命令选项:

    -e 所有进程,和-A一样-l 显示长格式-F 额外的全格式,包括参数和选项。-H 显示进程等级-L 显示线程,可能带有LWP和NLWP列-m 在进程后面显示线程

    使用如下命令可以看到详细的进程信息:

    ps -elFL

    b57b891f39cc77e1a92b7a1c2190d09e.png

    输出的字段含义:

    F 进程标志S 进程状态:S=睡眠,R=运行,T=停止或跟踪, D=不可中断的睡眠,Z=僵尸。UID 拥有进程的用户名字。PID 进程IDPPID 父进程IDLWP LWP号(light weight process,or thread,轻量级进程,或线程)。c 处理器使用的百分比。NLWP 进程中的lwps(线程)个数。PRI 进程优先级NI nice级别(进程是否通过nice改变优先级,见下文)ADDR 进程地址空间(例子中没展示)SZ 进程使用的内存大小(代码+数据+栈) ,单位kb。WCHAN 睡眠进程的内核函数名字,如果进程在运行,显示“-”,如果显示为“*”,则表示是多线程。RSS 驻留内存大小,任务所使用的非swap物理内存大小,单位是kb。PSR 分配给进程的处理器个数。STIME 命令开始时间TTY 终端TIME 进程从启动开始,使用CPU的总时间CMD 开启任务的命令(包含参数)

    free

    free命令显示了系统所有已用和可用内存(包括swap)量。也包括被内核使用的缓冲和缓存

    信息。

    使用free命令的时候,记住Linux内存架构和虚拟内存管理器的工作方式。空闲内存是受限使

    用的,使用swap也不表示出现了内存瓶颈。

    下图展示了free命令的基本原理。

    28f36b99a00dbb13e5af32b5fdc9f401.png

    free命令基本原理

    free命令的常用参数:

    -b,-k,-m,-g 以字节b,千字节kb,兆字节mb和吉字节gb为单位展示。

    -l 显示详细的高低内存统计

    -c 输出free的次数

    Memory used in a zone

    832e8e9f32ff40e2cd1527cd901a541c.png

    iostat

    iostat命令显示从系统启动依赖的平均CPU时间(和uptime类似)。它会生成服务器磁盘子系

    统的活动报告:CPU和磁盘设备利用情况。使用iostat找出详细的I/O瓶颈,进行性能优化,详

    见“找到磁盘瓶颈”一节内容。iostat是sysstat包里的一个组件。

    CPU使用报告有4个部分:

    %user 显示CPU在用户级执行应用程序所花时间的百分比。

    %nice 显示带有nice优先级的用户级程序占用的CPU时间百分比(详见“nice,renice一

    节”)。

    %sys 显示显示执行系统级(内核)任务所占用CPU时间的百分比。

    %idle 显示CPU空闲的时间百分比。

    设备使用报告包括如下部分:

    Device 块设备的名字

    tps 设备上的每秒传输次数(每秒的I/O请求数)。多个单I/O请求可以合成一个传输请

    求,因为每个传输请求的大小可以是不一样的。

    Blk_read/s,Blk_wrtn/s 每秒块读写显示了每秒从设备读或者写的数据。块也可以有不同的

    大小。常见的是1024,2048和4096字节,这是取决分区大小。

    2b2d8ba328dcd738b0811bef69fccee0.png

    sar

    使用sar命令可以收集、展示和保存系统信息。sar命令由三个部分组成:sar,显示数据,sa1

    和sa2,收集和存储数据。sar工具是sysstat包的一部分。

    73bf54d4fb74b9fb2390e5dfe738fec1.png

    mpstat

    mpstat是一个可以展示多处理器服务器上每个可用CPU活动信息的命令。所有CPU的平均活

    动情况也会显示出来。mpstat也是sysstat包的一部分。

    mpstat工具可以全面展示系统或者CPU的统计信息。通过给mpstat传递采样频率和采样次

    数,可以模拟vmstat的使用。下图展示了通过mpstat -P ALL 来输出每个CPU的平均使用率。

    94dbf5eb811ecae3123b3b3eb6831135.png

    numastat

    在企业数据中心,非统一内存架构(Non-Uniform Memory Architecture ,NUMA)已经变成主流,例如IBM System x3950,然而,NUMA系统给调优带来了新的挑战。在NUMA出现之前,我们从来不需要关心内存的位置。幸好,企业Linux发行版为监测NUMA架构行为提供了工具。numastat命令提供本地和远程内存使用率和所有节点的整体内存配置。本地内存分配失败的信息在numa_miss一行展示,远程内存(shower memory)分配信息在numa_foregin一行展示。过度的使用远程内存会增加风险,可能导致整体性能下降。把进程绑定映射本地内存的节点会增加性能。

    97eac84fbd347c0ed0398a66915687a4.png

    pmap

    pmap命令会展示一个或多个进程正在使用的内存量。使用这一工具,你可以确定服务器上的

    哪一个进程正在分配内存,还有是否这部分内存导致了内存瓶颈。更多信息,使用pmap -d 1选项。

    fc013cbf7e9dabcd6847e6e72f0f4604.png

    最后一行显示的信息最为有用:

    mapped 该进程映射到文件的内存量。writable/private 该进程使用的私有地址空间。shared 该进程和其它进程共享的地址空间量。

    netstat

    netstat 是最常用的工具之一,如果你从事网络工作,你应该对这个命令很熟悉。它会展示网

    络相关的信息,例如socket使用,路由,接口,协议和其它网络统计。

    deca7ddcb54941fbe2f08083a759de44.png

    有如下的基础选项:

    -a 显示所有的socket信息-r 显示路由信息-i 显示网络接口统计-s 显示网络协议统计

    Socket信息解释:

    Proto socket使用的协议(tcp,udp,raw)。

    Recv-Q 表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,单位是字

    节。

    Send-Q 对方没有收到的数据或者说没有Ack的,还是本地缓冲区,单位字节。

    Local Address socket的本地地址和端口。除非使用--numeric(-n)选项,socket地址会被

    解释成主机名(FQDN),端口号会被转成相应的服务名字。

    Foreign Address 远端socket的端口和地址。

    State socket的状态。因为raw和UDP通常是没有状态的,所以这列可能是空白。

    iptraf

    iptraf监控和展示TCP/IP的实时流量。它可以根据各个session、接口、协议展示TCP/IP流量

    统计。iptraf组件是由iptraf包提供。

    iptraf给我们展示如下的报告:

    IP流量监控:通过TCP连接的网络流量统计接口一般统计:网络接口流量统计接口详细统计:根据端口的网络流量统计统计分析:根据TCP/UDP端口和包大小的网络流量统计。局域网统计:根据网络2层地址的网络流量统计。

    tcmpdump / ethereal

    tcpdump和ethereal通常用来抓取和分析网络流量。这两个工具都会用到libpcap库来抓取包。

    在混杂模式下,它们会监控网卡上的所有流量,并且抓取所有网卡上收到的分片。为了抓取

    所有包,这些命令应该使用超级用户权限执行,以便开启网卡混杂模式。

    你可以使用这些工具来找到和网络相关的问题。可以发现TCP/IP重传,滑动窗口大小变化,

    名字解析问题、网络错误配置等。记住,这些工具只能监控所有到达网卡的分片,而不是所

    有的网络流量。

    1、tcpdump

    tcpdump是一个简单和强大的工具。它拥有基本的协议分析能力,可以获得网络上的大体情

    况。tcpdump可以使用很多选项和扩展表达式来过滤要抓取的包。入门可以看看如下的几个选项:

    -i 指定网络接口-e 打印数据链路层头-s 抓取每个包的字节-n 避免DNS解析-w 写入文件-r 从文件读取-v,-vv,-vvv 详细输出

    抓取过滤器的表达式:

    关键字:

    源目主机,源目端口,tcp,udp,icmp,源目网络等等

    联合逻辑使用

    非 ('!'或者'not')与 ('&&'或者'and')或 ('||'或者'or')
    9039baf603d1d91247a53c982af78b01.png

    DNS查询包

    2、ethereal

    ethereal有和tcpdump相似的功能,但是更加复杂,并且拥有更高级的协议分析和报告能力。

    它还拥有一个GUI接口和ethereal命令行界面。

    和tcpdump类似,ethereal也可以使用过滤抓取,从而缩小抓取分片的范围。如下是一些常用

    的表达式。

    IP

    ip.version ==6 and ip.len > 1450ip.addr == 129.111.0.0/16ip.dst eq www.example.com and ip.src == 192.168.1.1not ip.addr eq 192.168.4.1

    TCP/UDP

    tcp.port eq 22tcp.port == 80 and ip.src == 192.168.2.1tcp.dstport == 80 and (tcp.flags.syn == 1 or tcp.flags.fin == 1)tcp.srcport == 80 and (tcp.flags.syn == 1 and tcp.flags.ack == 1)tcp.dstport == 80 and tcp.flags == 0x21

    应用层

    http.request.method == "POST "smb.path contains SERVERSHARE

    nmon

    Nigel's Monitor简称nmon,是由Nigel Griffiths开发的监控Linux系统性能的常用工具。由于nmon能监控多个子系统的性能信息,所以,可以把它作为性能监控的唯一工具。通过nmon可以获取的信息有:处理器利用率、内存利用率、运行队列信息、磁盘I/O统计和网络I/O统计,页活动信息和进程指标。

    nmon输出的CSV文件可以导入电子表格应用中,生成可视化图形报告,要使用该功能,启动nmon的时候需要带上-f选项。例如使用如下命令,让nmon生成30秒钟为频率,总时长1小时的报告。

    # nmon -f -s 30 -c 120

    strace

    strace命令会拦截和记录进程的系统调用或进程接收到的信号。这是一个有用的诊断、教学和

    调试工具。它在解决程序遇到的问题方面很有价值。

    使用时,需要指定要监控的进程ID:

    strace -p

    72b1c4790269c58a6edfd8eec1c0d1a0.png

    Proc文件系统

    proc文件系统不是真实的文件系统,但是它真的十分有用。它不是存储数据的;而是提供运

    行内核的监控和操作接口。proc文件系统让管理员可以监控和修改运行中的内核。下图展示

    了一个简单的proc文件系统。大多数Linux性能工具都要依赖于/proc提供的信息。

    4643d33060dbd1ed47b090adeea6e913.png

    proc文件系统下的信息和布局:

    /proc目录下的文件

    /proc根目录下的各种文件里面包含相关系统的统计。你可以找到Linux工具使用的信息源,例如vmstat和cpuinfo文件。

    数字1到X

    各个数字的子目录指向的是运行进程或者它们的进程ID(PID)。目录结构总是已PID 1开始,指向的是init进程,然后是系统上运行的各个PID。每个数字子目录下保存进程相关的统计信息。例如进程映射的虚拟内存。

    acpi

    ACPI意思是高级配置与电源接口(advanced configuration and power interface),,受到大多数现代桌面和笔记本系统支持。由于ACPI主要是PC技术,所以在服务器上通常是禁用状态。

    总线(bus)

    这个子目录包含总线子系统的信息,例如PCI总线或者系统USB接口。

    irq

    irq目录包含系统中断的信息。这个目录下的每个子目录代表一次中断,也可能是一个附加设备,例如网卡。在irq子目录下,你可以修改一个给定中断的CPU关联(affinity)。

    net

    网络子目录下包含网络接口的原始统计数据,例如收到的多播包或接口的路由。

    scsi

    scsi子目录包含系统上关于SCSI子系统的信息,例如附加设备或者驱动调整。

    sys

    在sys子目录下,是可调整的内核参数,例如虚拟内存管理器或者是网络栈的行为。

    tty

    虚拟终端和附加的物理设备信息都包含在tty子目录中

    篇幅有限,关于linux性能监控工具就大概介绍到这了,大家有空可以自己测试下,后面会分享更多linux方面的内容,感兴趣的朋友可以关注下!!

    cc956a711c6dd7423e4ae72cffd0ddbe.gif
    展开全文
  • 2、function 标签 partition-hash-int.txt autopartition-long.txt 属性 类型 说明 name String 指定算法的名字。 class String 制定路由算法具体的类名字。 property String 为具体算法需要用到的一些属性。 三...

    目录

    前言

    MyCat配置参数详解

    一、MyCat中常用的三个配置

    二、rule.xml

    1、tableRule 标签

    2、function 标签

    三、schema.xml

    1、schema 标签

    2、table 标签

    3、childTable 标签

    4、dataNode 标签

    5、dataHost 标签

    6、heartbeat 标签

    7、writeHost 标签、readHost 标签

    四、server.xml

    1、user 标签

    2、system 标签


     

    前言

    在数据量非常大的情况下,在读写操作频繁的情况下,如果服务器硬件设施不够NB,就很容易出现性能低下的问题。最常见的做法有升级硬件设施、分库分表或者读写分离等。

    硬件设施昂贵,项目资金有限不允许,怎么办?当然,可以从数据库访问操作方面入手咯,通过分库分表或者读写分离来提高数据库的性能,以提高系统整体的性能。

    一般实现分库分表或者读写分离的实现是通过数据库中间件来实现的,常见的数据库中间件有:ShardingSphere、MyCat、DRDS等,本篇文章主要就MyCat的配置作详细介绍,为后的文章作铺垫。

    为什么要出这篇文章?有很多人想实现分库分表又或者读写分离等,于是乎就到网上去收罗了一篇,一饨操作猛如虎,结果怎么也运行不起来,问博主,我这个怎启动不起来???,博主一看,配置错了!!!于是乎就有了这篇文章,知其然又知其所以然后,天高任我飞咯。

    MyCat配置参数详解

     

    一、MyCat中常用的三个配置

    配置文件说明
    schema.xml
    Schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。
    server.xml
    server.xml几乎保存了所有mycat需要的系统配置信息。其在代码内直接的映射类为 SystemConfig 类。
    rule.xml
    rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有tableRule function 这两个标签。

     

    二、rule.xml

    rule.xml 里面就定义了对表进行拆分所涉及到的规则定义。通过此配置可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有 tableRule 和 function 这两个标签。在具体使用过程中可以按照需求添加 tableRule 和 function。

     

    1、tableRule 标签

    这个标签主要用来定义表规则。

    <tableRule name="rule1">
    	<rule>
    		<columns>id</columns>
    		<algorithm>func1</algorithm>
    	</rule>
    </tableRule>
    属性名    

    类型  

    说明
    name
    String
    属性指定唯一的名字,用于标识不同的表规则。 内嵌的 rule 标签则指定对物理表中的哪一列进行拆分和使用什么路由算法。
    columns
    String
    内指定要拆分的列名字。
    algorithm
    String
    使用 function 标签中的 name 属性。连接表规则和具体路由算法。当然,多个表规则可以连接到同一个路由算法上。 标签内使用。让逻辑表使用这个规则进行分片。

     

    2、function 标签

    <function name="hash-int"
    		class="io.mycat.route.function.PartitionByFileMap">
    	<property name="mapFile">partition-hash-int.txt</property>
    </function>
    
    <function name="rang-long"
    		class="io.mycat.route.function.AutoPartitionByLong">
    	<property name="mapFile">autopartition-long.txt</property>
    </function>
    属性名类型说明
    name
    String
    指定算法的名字。
    class
    String
    制定路由算法具体的类名字。
    property
    String
    为具体算法需要用到的一些属性。
     
     
     

    三、schema.xml

    1、schema 标签

    schema 标签用于定义MyCat实例中的逻辑库,MyCat可以有多个逻辑库,每个逻辑库都有自己的相关配置。可以使用 schema 标签来划分这些不同的逻辑库。
    如果不配置 schema 标签,所有的表配置,会属于同一个默认的逻辑库。

    <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn1">
    	<!-- auto sharding by id (long) -->
    	<!-- splitTableNames 启用<table name 属性使用逗号分割配置多个表,即多个表使用这个配置 -->
    	<table name="travelrecord,address" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" splitTableNames ="true"/>
    	<!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate"/> -->
    </schema>

     

    schema 标签属性:

    属性名类型说明
    dataNode
    String
    该属性用于绑定逻辑库到某个具体的database上,如果定义了这个属性,那么这个逻辑库就不能工作在分库分表模式下了。也就 是说对这个逻辑库的所有操作会直接作用到绑定的dataNode上,这个schema就可以用作读写分离和主从切换。
    注意,该属性只能配置绑定到一个 database 上,不能绑定多个dn。
    checkSQLschema
    Boolean
    当该值设置为 true 时,如果执行语句 “ select * from TESTDB.travelrecord; ” 则MyCat会把语句修改为 “ select * from travelrecord; ”。即把表示schema的字符去掉,避免发送到后端数据库执行时报 “ (ERROR 1146 (42S02): Table ‘testdb.travelrecord’ doesn’t exist)。” 不过,即使设置该值为 true ,如果语句所带的是并非是 schema 指定的名字,例如:“ select * from db1.travelrecord; ” 那么 MyCat并不会删除db1这个字段,如果没有定义该库的话则会报错,所以在提供SQL语句的最好是不带这个字段。
    sqlMaxLimit
    Integer
    当该值设置为某个数值时。每条执行的SQL语句,如果没有加上limit语句,MyCat也会自动的加上所对应的值。例如设置值为 100,执行 “ select * from TESTDB.travelrecord; ” 的效果为和执行 “ select * from TESTDB.travelrecord limit 100; ”相同。 不设置该值的话,MyCat默认会把查询到的信息全部都展示出来,造成过多的输出。所以,在正常使用中,还是建议加上一个值,用于减少过多的数据返回。
    当然SQL语句中也显式的指定limit的大小,不受该属性的约束。
    注意,如果运行的schema为非拆分库的,那么该属性不会生效。需要手动添加limit语句。

     

    2、table 标签

    Table 标签定义了MyCat中的逻辑表,所有需要拆分的表都需要在这个标签中定义。

    <!-- auto sharding by id (long) -->
    <!--splitTableNames 启用<table name 属性使用逗号分割配置多个表,即多个表使用这个配置-->
    <table name="travelrecord,address" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" splitTableNames ="true"/>
    <!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate"/> -->

    如果需要定义多个dn时,可以使用如下的方法来减少配置:

    <table name="travelrecord" dataNode="multipleDn$0-99,multipleDn2$100-199" rule="auto-sharding-long" ></table>
    <dataNode name="multipleDn" dataHost="localhost1" database="db$0-99" ></dataNode>
    <dataNode name="multipleDn2" dataHost="localhost1" database=" db$0-99" ></dataNode>

    这里需要注意的是 database 属性所指定的真实 database name 需要在后面添加一个,例如上面的例子中,需要在真实的mysql上 建立名称为dbs0到dbs99的 database。

     

    table 标签属性:

    属性名类型

    说明

    nameString
    定义逻辑表的表名,这个名字就如同我在数据库中执行create table命令指定的名字一样,同个schema标签中定义的名字必须唯一。
    dataNode
    String
    定义这个逻辑表所属的dataNode, 该属性的值需要和dataNode标签中name属性的值相互对应。
    ruleString
    该属性用于指定逻辑表要使用的规则名字,规则名字在 rule.xml 中定义,必须与 tableRule 标签中 name 属性属性值一一对应。
    ruleRequired
    Boolean
    该属性用于指定表是否绑定分片规则,如果配置为true,但没有配置具体rule的话 ,程序会报错。
    primaryKey
    String
    该逻辑表对应真实表的主键,例如:分片的规则是使用非主键进行分片的,那么在使用主键查询的时候,就会发送查询语句到所有配置的dn上,如果使用该属性配置真实表的主键。难么MyCat会缓存主键与具体dn的信息,那么再次使用非主键进行查询的时候就不会进行广播式的查询,就会直接发送语句给具体的dn,但是尽管配置该属性,如果缓存并没有命中的话,还是会发送语句给具体的dn,来获得数据。
    type
    String
    该属性定义了逻辑表的类型,目前逻辑表只有“全局表”和”普通表”两种类型。
    对应的配置:
    全局表:global。
    普通表:不指定该值为globla的所有表。
    autoIncrement
    Booleanmysql对非自增长主键,使用last_insert_id()是不会返回结果的,只会返回0。所以,只有定义了自增长主键的表才可以用last_insert_id()返回主键值。
    mycat目前提供了自增长主键功能,但是如果对应的mysql节点上数据表,没有定义auto_increment,那么在mycat层调用last_insert_id()也是不会返回结果的。
    由于insert操作的时候没有带入分片键,mycat会先取下这个表对应的全局序列,然后赋值给分片键。这样才能正常的插入到数据库中,最后使用last_insert_id()才会返回插入的分片键值。
    如果要使用这个功能最好配合使用数据库模式的全局序列。
    使用autoIncrement=“true” 指定这个表有使用自增长主键,这样mycat才会不抛出分片键找不到的异常。
    使用autoIncrement=“false” 来禁用这个功能,当然你也可以直接删除掉这个属性。默认就是禁用的。
    needAddLimit
    Boolean指定表是否需要自动的在每个语句后面加上limit限制。由于使用了分库分表,数据量有时会特别巨大。这时候执行查询语句,如果恰巧又忘记了加上数量限制的话。那么查询所有的数据出来,也够等上一小会儿的。
    所以,mycat就自动的为我们加上LIMIT 100。当然,如果语句中有limit,就不会在次添加了。这个属性默认为true,你也可以设置成false禁用掉默认行为。

     

    3、childTable 标签

    childTable 标签用于定义E-R分片的子表。通过标签上的属性与父表进行关联。
     
    属性名类型说明
    name
    String
    定义子表的表名。
    joinKey
    String
    插入子表的时候会使用这个列的值查找父表存储的数据节点。
    parentKey
    String属性指定的值一般为与父表建立关联关系的列名。程序首先获取joinkey的值,再通过 “ parentKey ”属性指定的列名产生查询语句,通过执行该语句得到父表存储在哪个分片上。从而确定子表存储的位置。
    primaryKey
    String
    同 table 标签  primaryKey 属性。
    needAddLimit
    String
    同 table 标签的  needAddLimit 属性。

     

    4、dataNode 标签

    <dataNode name="dn1" dataHost="localhost1" database="db1" />
    <dataNode name="dn2" dataHost="localhost1" database="db2" />
    <dataNode name="dn3" dataHost="localhost1" database="db3" />

    dataNode 标签定义了MyCat中的数据节点,也就是我们通常所说的数据分片。一个 “ dataNode ” 标签就是一个独立的数据分片。

     

    dataNode 标签中的属性:

    属性名类型说明
    name
    String
    定义数据节点的名字,这个名字需要是唯一的,需要在table标签上应用这个名字,来建立表与分片对应的关系
    dataHost
    String
    该属性用于定义该分片属于哪个数据库实例的,属性值是引用 dataHost 标签上定义的name属性。
    database
    String
    该属性用于定义该分片属性哪个具体数据库实例上的具体库,因为这里使用两个纬度来定义分片,就是:实例 + 具体的库。因为每个库上建立的表和表结构是一样的。所以这样做就可以轻松的对表进行水平拆分。

     

    5、dataHost 标签

    作为 Schema.xml 中最后的一个标签,该标签在 mycat 逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。配置示例如下:

    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" 
    					dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
    	<heartbeat>select user()</heartbeat>
    	<!-- can have multi write hosts -->
    	<writeHost host="hostM1" url="localhost:3306"
    						user="root" password="123456">
    	</writeHost>
    	<!-- <writeHost host="hostM2" url="localhost:3316" 
    						user="root" password="123456"/> -->
    </dataHost>

     

    dataHost 标签属性:

    属性名类型说明
    name
    String
    唯一标识 dataHost 标签,供上层的标签使用。
    maxCon
    Integer指定每个读写实例连接池的最大连接。也就是说,标签内嵌套的 writeHost、readHost 标签都会使用这个属性的值来实例化出连接池的最大连接数。
    minCon
    Integer
    指定每个读写实例连接池的最小连接,初始化连接池的大小。
    balance
    Integer
    负载均衡类型,目前的取值有3种:
    1)、balance=“0”,所有读操作都发送到当前可用的 writeHost上。
    2)、balance=“1”,所有读操作都随机的发送到 readHost。
    3)、balance=“2”,所有读操作都随机的在 writeHost、readhost上分发。
    writeType
    Integer
    写库的负载均衡类型,目前的取值有3种:
    1)、writeType=“0”,所有写操作都发送到可用的 writeHost上。
    2)、writeType=“1”,所有写操作都随机的发送到 readHost。
    3)、writeType=“2”,所有写操作都随机的在 writeHost、readhost分上发。
    dbType
    String指定后端连接的数据库类型,目前支持二进制的mysql协议,还有其他使用JDBC连接的数据库。例如:mongodb、oracle、spark等。
    dbDriver
    String指定连接后端数据库使用的 Driver,目前可选的值有 native 和 JDBC。使用 native的话,因为这个值执行的是二进制的 mysql协议,所以可以使用 mysql 和 maridb。其他类型的数据库则需要使用   JDBC 驱动来支持。
    如果使用JDBC的话需要将符合JDBC 4标准的驱动JAR包放到MYCAT\lib目录下,并检查驱动JAR包中包括如下目录结构的文件:META-INF\services\java.sql.Driver。在这个文件内写上具体的Driver类名,例如:com.mysql.jdbc.Driver。

     

    6、heartbeat 标签

    这个标签内指明用于和后端数据库进行心跳检查的语句。例如,MYSQL可以使用 select user(),Oracle 可以使用 select 1 from dual 等。

    这个标签还有一个 connectionInitSql 属性,主要是当使用 Oracla 数据库时,需要执行的初始化SQL语句就这个放到这里面来。例如:alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'

     

    7、writeHost 标签、readHost 标签

    这两个标签都指定后端数据库的相关配置给mycat,用于实例化后端连接池。唯一不同的是,writeHost 指定写实例、readHost 指定读实例,组着这些读写实例来满足系统的要求。

    在一个 dataHost 内可以定义多个 writeHost 和 readHost。但是,如果 writeHost指定的后端数据库宕机,那么这个writeHost绑定的所有readHost都将不可用。另一方面,由于这个writeHost宕机系统会自动的检测到,并切换到备用的writeHost上去。

    这两个标签的属性相同

    属性名类型说明
    host        
    String  
    用于标识不同实例,一般 writeHost 一般使用 ->M1,readHost 一般使用 ->S1。
    url
    String
    后端实例连接地址,如果是使用 native 的 dbDriver,则一般为 address:port 这种形式。用JDBC或其他的dbDriver,则需要特殊指定。当使用JDBC时则可以这么写:jdbc:mysql://localhost:3306/。
    password
    String
    后端存储实例需要的密码。
    user
    String
    后端存储实例需要的用户名字。

     

    四、server.xml

    server.xml 几乎保存了所有mycat需要的系统配置信息

    1、user 标签

    <user name="root" defaultAccount="true">
    	<property name="password">123456</property>
    	<property name="schemas">TESTDB</property>
    	<property name="defaultSchema">TESTDB</property>
    	<!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->
    
    	<!-- 表级 DML 权限设置 -->
    	<!--
    	<privileges check="false">
    		<schema name="TESTDB" dml="0110" >
    			<table name="tb01" dml="0000"></table>
    			<table name="tb02" dml="1111"></table>
    		</schema>
    	</privileges>
    	-->
    </user>
    
    <user name="user">
    	<property name="password">user</property>
    	<property name="schemas">TESTDB</property>
    	<property name="readOnly">true</property>
    	<property name="defaultSchema">TESTDB</property>
    </user>
    

    server.xml 中的标签本就不多,这个标签主要用于定义登录mycat的用户和权限。例如上面的例子中,定义了一个用户,用户名为root、密码为123456,用户名为user,密码也为user,可访问的schema也只有TESTDB一个。

    如果在schema.xml中定义了多个schema,那么这个用户是无法访问其他的schema。在mysql客户端看来则是无法使用use切换到这个其他的数据库。如果使用了use命令,则mycat会报出这样的错误提示:
    “ ERROR 1044 (HY000): Access denied for user 'test' to database 'xxx' ”

    这个标签嵌套的 property标签则是具体声明的属性值,正如上面的例子。可以修改user标签的 name属性来指定用户名;修改 password内的文本来修改密码;修改 readOnly为 true 或 false 来限制用户是否只是可读的;修改 schemas内的文本来控制用户可放问的 schema;修改 schemas内的文本来控制用户可访问的 schema,同时访问多个 schema的话使用 , 隔开,例如:
    <property name="schemas">TESTDB,db1,db2,db3</property>

     

    2、system 标签

    这个标签内嵌套的所有property标签都与系统配置有关,配置示例如下:

    <system>
    	<property name="nonePasswordLogin">0</property> <!-- 0为需要密码登陆、1为不需要密码登陆 ,默认为0,设置为1则需要指定默认账户-->
    	<property name="ignoreUnknownCommand">0</property><!-- 0遇上没有实现的报文(Unknown command:),就会报错、1为忽略该报文,返回ok报文。
    	在某些mysql客户端存在客户端已经登录的时候还会继续发送登录报文,mycat会报错,该设置可以绕过这个错误-->
    	<property name="useHandshakeV10">1</property>
    	<property name="removeGraveAccent">1</property>
    	<property name="useSqlStat">0</property>  <!-- 1为开启实时统计、0为关闭 -->
    	<property name="useGlobleTableCheck">0</property>  <!-- 1为开启全加班一致性检测、0为关闭 -->
    	<property name="sqlExecuteTimeout">300</property>  <!-- SQL 执行超时 单位:秒-->
    	<property name="sequnceHandlerType">1</property>
    	<!--<property name="sequnceHandlerPattern">(?:(\s*next\s+value\s+for\s*MYCATSEQ_(\w+))(,|\)|\s)*)+</property>
    	INSERT INTO `travelrecord` (`id`,user_id) VALUES ('next value for MYCATSEQ_GLOBAL',"xxx");
    	-->
    	<!--必须带有MYCATSEQ_或者 mycatseq_进入序列匹配流程 注意MYCATSEQ_有空格的情况-->
    	<property name="sequnceHandlerPattern">(?:(\s*next\s+value\s+for\s*MYCATSEQ_(\w+))(,|\)|\s)*)+</property>
    	<property name="subqueryRelationshipCheck">false</property> <!-- 子查询中存在关联查询的情况下,检查关联字段中是否有分片字段 .默认 false -->
    	<property name="sequenceHanlderClass">io.mycat.route.sequence.handler.HttpIncrSequenceHandler</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 | type 2 NettyBufferPool -->
    	<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="dataNodeIdleCheckPeriod">300000</property> 5 * 60 * 1000L; //连接空闲检查
    	<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">0</property>
    
    	<!--
    	单位为m
    	-->
    	<property name="memoryPageSize">64k</property>
    
    	<!--
    	单位为k
    	-->
    	<property name="spillsFileBufferSize">1k</property>
    
    	<property name="useStreamOutput">0</property>
    
    	<!--
    	单位为m
    	-->
    	<property name="systemReserveMemorySize">384m</property>
    
    
    	<!--是否采用zookeeper协调切换  -->
    	<property name="useZKSwitch">false</property>
    
    	<!-- XA Recovery Log日志路径 -->
    	<!--<property name="XARecoveryLogBaseDir">./</property>-->
    
    	<!-- XA Recovery Log日志名称 -->
    	<!--<property name="XARecoveryLogBaseName">tmlog</property>-->
    	<!--如果为 true的话 严格遵守隔离级别,不会在仅仅只有select语句的时候在事务中切换连接-->
    	<property name="strictTxIsolation">false</property>
    
    	<property name="useZKSwitch">true</property>
    	<!--如果为0的话,涉及多个DataNode的catlet任务不会跨线程执行-->
    	<property name="parallExecute">0</property>												
    </system>

     

    这儿介绍部分属性,其余数据在同上或已在配置中注释存在的:

    属性名   

    类型 说明
    defaultSqlParser
    String由于mycat最初是时候Foundation DB的sql解析器,而后才添加的Druid的解析器。所以这个属性用来指定默认的解析器。目前的可用的取值有:druidparser 和 fdbparser。使用的时候可以选择其中的一种,目前一般都使用 druidparser。
    processors
    String
    这个属性主要用于指定系统可用的线程数,默认值为 Runtime.getRuntime().availableProcessors()  方法返回的值。主要影响 processorBufferPool、 processorBufferLocalPercent processorExecutor  属性。 NIOProcessor  的个数也是由这个属性定义的, 所以调优的时候可以适当的调高这个属性。
    processorBufferChunk
    Byte
    这个属性指定每次分配 Socket Direct Buffer 的大小,默认是 4096个字节。这个属性也影响 buffer pool的长度。
    processorBufferPool
    Byte这个属性指定 bufferPool 计算比例值。由于每次执行 NIO 读、写操作都需要使用到buffer,系统初始化的时候会建立一定长度的 buffer 池来加快读、写的效率,减少建立 buffer的时间。
    processorBufferLocalPercent
    Byte
    前面提到了  ThreadLocalPool 。这个属性就是用来控制分配这个 pool 的大小用的,但其也并不是一个准确的值,也是一个比例值。这个属性默认值为100。
    processorExecutor
    Byte这个属性主要用于指定 NIOProcessor 上共享的 businessExecutor 固定线程池大小。mycat 在需要处理一些异步逻辑的时候会把任务提交到这个线程池中。新版本中这个连接池的使用频率不是很大了,可以设置一个较小的值。
    sequnceHandlerType
    String指定使用 Mycat 全局序列的类型。0为本地文件方式,1为数据库方式。默认是使用本地文件方式,文件方式主要只是用于测试使用。

     

    * 注:

    Mycat 中有两个主要的 buffer池:
    - BufferPool
    - ThreadLocalPool

     

    BufferPool 由 ThreadLocalPool 组合而成,每次从 BufferPool 中获取 buffer 都会优先获取 ThreadLocalPool 中的buffer,未命中之后才会去获取 BufferPool 中的 buffer。也就是说 ThreadLocalPool 是作为 BufferPool 的二级缓存,每个线程内部自己使用的。当然,这其中还有一些限制条件需要线程的名字是由 $_ 开头。然而,BufferPool 上的 buffer 则是每个NIOProcessor都共享的。


    默认这个属性的值为:
    默认 bufferChunkSize(4096) * processors 属性 * 1000
    BufferPool 的总长度 = bufferPool / bufferChunk

     

    若 bufferPool 不是 bufferChunk 的整数倍,则总长度为前面计算得出的商 + 1,假设系统线程数为 4,其他都为属性的默认值,则:
    bufferPool = 4096 * 4 * 1000
    BufferPool 的总长度:4000 = 16384000 / 4096

     

     

     

    参考文献:

    MyCat官网:【MyCat官方网站

    GitHub:【MyCATApache

    Issues:【Mycat-Server-issues

    MyCat指南:【MyCat指南CSDN


     好了,关于 MySQL中间件MyCat配置参数列表,schema.xml ,server.xml,rule.xml,配置参数详情,Mycat中的两个主要Buffer池,BufferPool的二级缓存 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。 
    歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。


    作       者:华    仔
    联系作者:who.seek.me@java98k.vip
    来        源:CSDN (Chinese Software Developer Network)
    原        文:https://blog.csdn.net/Hello_World_QWP/article/details/105050152
    版权声明:本文为博主原创文章,请在转载时务必注明博文出处!
    展开全文
  • 启动时可以指定把 Solr 的相关配置文件上传 Zookeeper,跨主机共享。这些 Zookeeper 中的配置不会再拿到本地缓存,Solr 直接读取 Zk 中的配置信息。配置文件的变动,所有机器都可以感知到。另外,Solr 的一些任务也...

    前言

    在企业系统架构中,使用到了分布式文档搜索引擎Solr,这儿作一个简单的知识整理。

     

    SolrCloud分布式企业搜索引擎架构原理解析

    1、关于SolrCloud

    Lucene 是一个Java语言编写的利用倒排原理实现的文本检索类库;而Solr则是以Lucene为核心来实现的企业级文本检索应用服务。Solr 部署方式有单机方式、多机Master-Slaver方式、Cloud方式。

    SolrCloud 则是 Solr4.x 版本以后加入的基于 Solr 和 Zookeeper 的分布式搜索解决方案。SolrCloud 是 Solr 基于 Zookeeper 作为集群的配置信息中心的一种部署方式。Solr 可以以多种方式部署,例如:单机方式,多机Master-Slaver方式。

    关于Zookeeper的原理及其优点,请参考【 Eureka 与 zookeeper 的区别、原理及各自优缺点

     

    2、SolrCloud 特点

    1)、集中式的配置

    所有配置信息使用 Zookeeper 进行集中管理。启动时可以指定把 Solr 的相关配置文件上传 Zookeeper,跨主机共享。这些 Zookeeper 中的配置不会再拿到本地缓存,Solr 直接读取 Zk 中的配置信息。配置文件的变动,所有机器都可以感知到。另外,Solr 的一些任务也是通过 Zk 作为媒介发布的。目的是为了容错。接收到任务,但在执行任务时崩溃的机器,在重启后,或者集群选出候选者时,可以再次执行这个未完成的任务。

    2)、自动容错(高可用)

    SolrCloud 对索引进行分片,并对每个分片创建多个 Replication。每个 Replication 都可以对外提供服务。一个 Replication 挂掉不会影响整体的索引服务。更强大的是,它还能自动的在其它机器上帮你把失败机器上的索引 Replication 重建并投入使用。

    3)、实时性

    近实时搜索立即推送式的 replication(也支持慢推送,可配置)。可以在秒内检索到新加入索引。

    4)、负载均很LB

    查询时自动负载均衡SolrCloud索引的多个Replication可以分布在多台机器上,均衡查询压力。如果查询压力大,可以通过扩展机器,增加Replication来减缓。

    5)、自动分发

    自动分发的索引和索引分片发送文档到任何节点,它都会转发到正确节点。

    6)、日志跟踪

    事务日志事务日志确保更新无丢失,即使文档没有索引到磁盘。

    7)、RESTful API

    强大的RESTful API通常你能想到的管理功能,都可以通过此API方式调用。这样写一些维护和管理脚本就方便多了。

    8)、可视化操作

    优秀的管理界面主要信息一目了然;可以清晰的以图形化方式看到SolrCloud的部署分布;当然还有不可或缺的Debug功能。

     

    2、Solr集群体系架构

    物理结构层组成:

    1)、Solr

    三个 Solr 实例,每个实例包括两个Core,组成一个SolrCloud(随着业务流量的提升,灵活扩展Solr实列)。

    2)、Core

    每个 Core 是 Solr 实例中一个独立的运行单位,提供文档索引和搜索服务。

    3)、Zookeeper

    Zookeeper 在整个SolrCloud 集群中扮演了分布式锁的角色,对SolrCloud是必须的。由Zookeeper来确定 Leader 选举。Solr 可以以内嵌的 Zookeeper 运行,但是建议用独立的,并且最好有3个以上的主机。
     

    逻辑结构层组成:
    1)、Collection

    Collection 在 SolrCloud 集群中是一个逻辑意义上的完整的索引结构。它常常被划分为一个或多个Shard(逻辑分片),它们使用相同的Config。如果Shard数超过一个,它就是分布式索引,SolrCloud让你通过Collection名称引用它,而不需要关心分布式检索时需要使用的和Shard相关参数。

    比如:针对商品信息搜索服务可以创建一个Collection:

     Collection = Shard-01 + Shard-02 + ... + Shard-N
    2)、Shard

    Collection 的逻辑分片。每个 Shard 被拆分成一个或者多个 replication,通过指定的某种选举机制来确定哪个是Leader。一个 Shard 需要由一个 Core 或多个 Core 组成。而 Collection 则一般由多个 Core 组成。

    3)、Master/Slave

    Master:是 Master-Slave 结构中的主结点

    Slave:是Master-slave结构中的从结点

    在同一个 Shard 下 Master 和 Slave 存储的数据是一致的,其目的为实现服务的高可用(何为高可用,就是在一个 Shard下,当 Master 节点挂掉后,某个 Slave 通过指定的选举机制,顶上来成为 Master,使服务正常运行,而不会出现服务访问中断的现象)。

     

     

     

     

    参考文档(老版本):【Solr4.10参考指南】<-这个版本已经在官方找不到了

    参考文档(新版本):【Solr8.1参考指南


     好了,关于 SolrCloud分布式企业搜索引擎架构原理解析 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。 
    歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。


    作       者:华    仔
    联系作者:who.seek.me@java98k.vip
    来        源:CSDN (Chinese Software Developer Network)
    原        文:https://blog.csdn.net/Hello_World_QWP/article/details/98726379
    版权声明:本文为博主原创文章,请在转载时务必注明博文出处!
    展开全文
  • 《Docker实例三Docker安装Redis实例 》 前言 在前面一篇文章种,完成了 《Docker安装MongoDB实例 》,本篇将继续镜像安装教程,并完成Docker安装Redis实例。...第一种:使用docker pull 镜像拉取镜像 ...
  • 云计算基础与应用 第五章 云存储

    千次阅读 2020-06-27 16:30:53
    以下为自己个人做的笔记,不带有商业性质,纯粹交流分享学习资料,如有侵权,请联系作者,作者看到会第一时间删除...既可以讲存储硬件,又可以是存储软件,还可以是存储网络或解决方案,这些都是云存储的核心组成部分。
  • 1970 年 E.F.Codd's 提出的大型共享数据库的数据关系模型的论文 "A relational model of data for large shared data banks",这使得数据建模和应用程序编程更加简单。 NoSQL 是一项全新的数据库革命性运动,...
  • Nginx-1.9.9 实现 负载均衡、反向代理

    千次阅读 2018-03-05 10:13:19
    负载均衡是建立在现有网络结构之上的,它提供了一种廉价的有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡,英文名称为Load Balance,其...
  • 当一个队列的成员都聚齐时,这个队列才可用,否则一直等待所有成员到达,这种是同步队列。 2)、  队列按照 FIFO 方式进行入队和出队操作,例如实现生产者和消费者模型。 同步队列用 Zookeeper 实现的实现思路...
  • 在进行系统部署环境架构时,选择的是 Windows 系统,并使用 Apache+Tomcat 实现负载均衡/反向代理,提高服务器的高可用和横向扩展,不过最近公司打算将 Windows 系统替换为 Linux 系统,并将 Apache 替换为 Nginx,...
  • token和–-csrf-url :绕过CSRF保护 –-csrf-token用于指定包含token的隐藏字段,若这个字段不是常见的防止CSRF攻击的字段Sqlmap可能不能自动识别出,需要手动指定。如Django中该字段为...
  • 04 渗透测试基础

    千次阅读 2021-01-04 11:48:42
    --tables 指定数据库、表名列出所有字段:sqlmap -u "url" -D "dataname" -T "tablename" --columns 指定数据库、表名、字段名列出所有字段内容:sqlmap -u "url" -D "dataname" -T "tablename" -C "username,...
  • PHP基础

    2021-05-30 15:00:37
    标准代码标记:(最常用)<?... ?> ...行注释: // (一次一行) 块注释: /* */ (一次多行) ...PHP是一种动态网络开发脚本语言,动态语言特点是交互性,会有...**变量使用:**定义、赋值、通过变量访问存储的数据
  • 另外重要的一点是:如果这个线程持有某个某个对象的监视器,那么这个对象监视器会被立即释放 10、如何在两个线程之间共享数据 通过在线程之间共享对象就可以了,然后通过wait/notify/notifyAll、await/signal/...
  • C++知识点总结

    千次阅读 2020-11-03 21:02:28
    C++ 程序的源文件通常使用扩展( .cpp、.cp 或 .c), 大多数的 C++ 编译器并不在乎源文件的扩展,但是如果您未指定扩展,则默认使用 .cpp。 写在源文件中的源代码是人类可读的源。它需要"编译",转为机器...
  • 含义 health 当前服务器健康状态: green(集群完整) yellow(单点正常、集群不完整) red(单点不正常) status 索引打开、关闭状态 index 索引 uuid 索引统一编号 pri 主分片数量 rep 副本数量 docs.count 可用文档...
  • 优化 进程_取函数入口 调试的时候不再输出汇编代码 3.优化 DLL_生成劫持代码 直接复制到源码可能会崩溃的BUG 4.移除 所有接码打码类 5.移除 完美验证码识别调用 次时代调用接口 6.移除 水淼JSON解析 树类 正则类 ...
  • 应用场景一:拆分数据库连接数 目前我们所有分库分表的应用,每一台数据库都被所有机器实例链接,每一个被路由的用户每次都可能被不同的实例链路引入到所属该用户的指定库表上。但在618和双11大促在进行机器扩容时...
  • Spark基础知识

    2021-02-23 20:15:48
    Spark概况1.1 Spark基础Spark相对于Hadoop的优势Hadoop和Spark的统一部署1.2 Spark核心模块第2章 Spark快速上手2.1 Spark三种部署方式local模式Standalone模式Yarn模式Spark Streaming配置高可用(HA)第3章 ...
  • A.DL-SCH B.BCH C.PBCH D.DCH2、 LTE/EPC网络中寻呼手机用的标识是(C)A.GUMMEI B.GUTI C.S-TMSI D.MMEI3、 下行控制信息(DCI: Downlink Control Information)有多种格式,用于传递不同的控制信息,其中用于传输PUSCH...
  • 集合成员与同一集合中的集合控制者共享有关其自身的信息。 此信息包括网络位置,安全信息和操作状态。 集体控制器使用此信息来执行操作并将操作委派给集体成员。 集体成员可以是一个且只有一个集体的成员。 集体...
  • CSDN会员服务协议

    万次阅读 多人点赞 2020-12-14 15:57:01
    本协议系由北京创新乐知网络技术有限公司及其关联公司(以下简称“CSDN”)与所有使用CSDN会员服务的主体(包括但不限于个人、团队等)(以下简称“用户”)对CSDN会员服务的使用及相关服务所订立的有效合约。...
  • Redis 学习笔记-雷云龙

    2019-12-16 10:01:56
    如果不Enable AOF ,仅靠Master-Slave Replication 实现高可用性也可以。能省掉一大笔IO也减少了rewrite时带来的系统波动。代价是如果Master/Slave同时倒掉,会丢失十几分钟的数据,启动脚本也要比较两个Master/...
  • 网络地址转换(NAT)

    2009-10-08 10:58:00
    网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地...
  • Java线程池详解

    2020-01-04 22:20:59
    可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。 例如,线程数一般取cpu数量+2比较合适,线程数过多会导致额外的线程切换开销。 一、线程池的好处 降低资源消耗------通过已有的...
  • 03 Elasticsearch原理解析

    千次阅读 2022-02-02 13:32:38
    在一个空节点的集群内创建为 users 的索引,将分配 3 个主分片和 1 份副本(每个主分片拥有1个副本分片)。 #PUT http://127.0.0.1:1001/users { "settings" : { "number_of_shards" : 3, "number_of_replicas...
  • NAT 详解

    万次阅读 多人点赞 2017-09-13 15:39:53
    NAT技术(一、二、三、四、五) 系列:https://blog.51cto.com/wwwcisco/category1.html CCNA学习笔记之NAT:...网络地址转换NAT原理及应用:http://blog.csdn.net/xiaofei0859/article/details/663...
  • 网络编程 26.transient 修饰的变量,不会被 序列化。 27.Oracle:Case when 28.Java:Case、break 29.普通Maven工程配置Log4j,并使用(无Spring) 30.反射(reflect),Junit中反射的使用 ⇒ 【JMockit】 31....
  • 欢迎关注我csnd博客 也欢迎关注公 众 号【Ccww笔记】,原创技术文章第 一时间推出 如果此文对你有帮助、喜欢的话,那就点个赞,点个关注呗! 《能力提升,加薪可待-JVM篇》-JVM虚拟机(内存、垃圾回收、性能优化) ...
  • C++ 设计模式

    万次阅读 多人点赞 2018-02-09 09:26:25
    1994 年,这几位大牛合著出版了一本为《Design Patterns: Elements of Reusable Object-Oriented Software》(即:《设计模式》)的书。该书首次提到了软件开发中设计模式的概念,将设计模式提升到理论高度,并将...

空空如也

空空如也

1 2 3
收藏数 47
精华内容 18
关键字:

共享盘指定的网络名不再可用csnd