MySQL:10.MyCAT實(shí)現(xiàn)讀寫(xiě)分離

簡(jiǎn)介

關(guān)鍵特性

支持SQL92標(biāo)準(zhǔn)
支持MySQL、Oracle焊虏、DB2、SQL Server忌怎、PostgreSQL等DB的常見(jiàn)SQL語(yǔ)法
遵守Mysql原生協(xié)議,跨語(yǔ)言筒溃,跨平臺(tái)恐似,跨數(shù)據(jù)庫(kù)的通用中間件代理。
基于心跳的自動(dòng)故障切換便锨,支持讀寫(xiě)分離,支持MySQL主從我碟,以及galera cluster集群放案。
支持Galera for MySQL集群,Percona Cluster或者M(jìn)ariaDB cluster
基于Nio實(shí)現(xiàn)矫俺,有效管理線程吱殉,解決高并發(fā)問(wèn)題掸冤。
支持?jǐn)?shù)據(jù)的多片自動(dòng)路由與聚合,支持sum,count,max等常用的聚合函數(shù),支持跨庫(kù)分頁(yè)友雳。
支持單庫(kù)內(nèi)部任意join稿湿,支持跨庫(kù)2表join,甚至基于caltlet的多表join押赊。
支持通過(guò)全局表饺藤,ER關(guān)系的分片策略,實(shí)現(xiàn)了高效的多表join查詢流礁。
支持多租戶方案涕俗。
支持分布式事務(wù)(弱xa)。
支持XA分布式事務(wù)(1.6.5)崇棠。
支持全局序列號(hào)咽袜,解決分布式下的主鍵生成問(wèn)題。
分片規(guī)則豐富枕稀,插件化開(kāi)發(fā),易于擴(kuò)展谜嫉。
強(qiáng)大的web萎坷,命令行監(jiān)控。
支持前端作為MySQL通用代理沐兰,后端JDBC方式支持Oracle哆档、DB2、SQL Server 住闯、 mongodb 瓜浸、巨杉。
支持密碼加密
支持服務(wù)降級(jí)
支持IP白名單
支持SQL黑名單比原、sql注入攻擊攔截
支持prepare預(yù)編譯指令(1.6)
支持非堆內(nèi)存(Direct Memory)聚合計(jì)算(1.6)
支持PostgreSQL的native協(xié)議(1.6)
支持mysql和oracle存儲(chǔ)過(guò)程插佛,out參數(shù)、多結(jié)果集返回(1.6)
支持zookeeper協(xié)調(diào)主從切換量窘、zk序列雇寇、配置zk化(1.6)
支持庫(kù)內(nèi)分表(1.6)
集群基于ZooKeeper管理,在線升級(jí)蚌铜,擴(kuò)容锨侯,智能優(yōu)化,大數(shù)據(jù)處理(2.0開(kāi)發(fā)版)冬殃。

什么是MYCAT

一個(gè)徹底開(kāi)源的囚痴,面向企業(yè)應(yīng)用開(kāi)發(fā)的大數(shù)據(jù)庫(kù)集群
支持事務(wù)、ACID审葬、可以替代MySQL的加強(qiáng)版數(shù)據(jù)庫(kù)
一個(gè)可以視為MySQL集群的企業(yè)級(jí)數(shù)據(jù)庫(kù)深滚,用來(lái)替代昂貴的Oracle集群
一個(gè)融合內(nèi)存緩存技術(shù)骂束、NoSQL技術(shù)、HDFS大數(shù)據(jù)的新型SQL Server
結(jié)合傳統(tǒng)數(shù)據(jù)庫(kù)和新型分布式數(shù)據(jù)倉(cāng)庫(kù)的新一代企業(yè)級(jí)數(shù)據(jù)庫(kù)產(chǎn)品
一個(gè)新穎的數(shù)據(jù)庫(kù)中間件產(chǎn)品

MYCAT監(jiān)控

支持對(duì)Mycat成箫、Mysql性能監(jiān)控
支持對(duì)Mycat的JVM內(nèi)存提供監(jiān)控服務(wù)
支持對(duì)線程的監(jiān)控
支持對(duì)操作系統(tǒng)的CPU展箱、內(nèi)存、磁盤蹬昌、網(wǎng)絡(luò)的監(jiān)控

環(huán)境

第一步:下載安裝

1.下載

http://dl.mycat.io

wget http://dl.mycat.io/1.6.7.1/Mycat-server-1.6.7.1-release-20190213150257-linux.tar.gz
tar vxf Mycat-server-1.6.7.1-release-20190213150257-linux.tar.gz
chmod -R 755 mycat/
mkdir mycat/logs
mv mycat/ /usr/local/

2.設(shè)置環(huán)境變量

echo "MYCAT_HOME=/usr/local/mycat" >> /etc/profile
echo 'export PATH=$MYCAT_HOME/bin:$PATH' >> /etc/profile
cat /etc/profile
source /etc/profile

3.schema.xml文件配置

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

    <!--6666666666-->
    <!--定義邏輯庫(kù)名-->
    <!--sqlMaxLimit:每條執(zhí)行的 SQL 語(yǔ)句混驰,如果沒(méi)有加上 limit 語(yǔ)句,MyCat 也會(huì)自動(dòng)的加上所對(duì)的值-->
    <!--這里的dataNode="kpcx"對(duì)應(yīng)下邊的dataNode name="kpcx"-->
    <schema name="kpcx" checkSQLschema="false" sqlMaxLimit="1000" dataNode="kpcx">
    </schema>

    <schema name="kpcx_coupon" checkSQLschema="false" sqlMaxLimit="1000" dataNode="kpcx_coupon">
    </schema>

    <!---->
    <!--這里的kpcx對(duì)應(yīng)上文的dataNode="kpcx"-->
    <!--這里的dataHost="localhost"對(duì)應(yīng)下文的<dataHost name="localhost1"-->
    <!--這里的database="db1"為服務(wù)器上實(shí)際數(shù)據(jù)庫(kù)名稱-->
    <dataNode name="kpcx" dataHost="localhost" database="kpcx" />
    <dataNode name="kpcx_coupon" dataHost="localhost" database="kpcx_coupon" />

    <!--balance="2"皂贩,所有讀操作都隨機(jī)的在 writeHost栖榨、readhost 上分發(fā)。-->
    <!-- writeType="0", 所有寫(xiě)操作發(fā)送到配置的第一個(gè) writeHost
                        第一個(gè)掛了切到還生存的第二個(gè)writeHost明刷,重新啟動(dòng)后已切換后的為準(zhǔn)婴栽,切換記錄在配置文件中:dnindex.properties .-->
    <!--switchType  切換類型:3 基于 MySQL galary cluster 的切換機(jī)制(適合集群)(1.4.1)心跳語(yǔ)句為 show status like ‘wsrep%’-->

    <dataHost name="localhost" maxCon="20000" minCon="50" balance="2" writeType="0" dbType="mysql" dbDriver="native" switchType="3" >
        <!--心跳檢測(cè)-->
        <heartbeat>show status like 'wsrep%'</heartbeat>
        <writeHost host="hostM1" url="192.168.1.81:3306" user="kpcx" password="123456" />
        <writeHost host="hostS2" url="192.168.1.82:3306" user="kpcx" password="123456" />
        <writeHost host="hostS3" url="192.168.1.83:3306" user="kpcx" password="123456" />
    </dataHost>
</mycat:schema>

4.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. -->
<!--6666666666-->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
    <system>
    <property name="nonePasswordLogin">0</property> <!-- 0為需要密碼登陸、1為不需要密碼登陸 ,默認(rèn)為0辈末,設(shè)置為1則需要指定默認(rèn)賬戶-->
    <property name="useHandshakeV10">1</property>
    <property name="useSqlStat">0</property>  <!-- 1為開(kāi)啟實(shí)時(shí)統(tǒng)計(jì)愚争、0為關(guān)閉 -->
    <property name="useGlobleTableCheck">0</property>  <!-- 1為開(kāi)啟全加班一致性檢測(cè)、0為關(guān)閉 -->

        <property name="sequnceHandlerType">2</property>
    <property name="subqueryRelationshipCheck">false</property> <!-- 子查詢中存在關(guān)聯(lián)查詢的情況下,檢查關(guān)聯(lián)字段中是否有分片字段 .默認(rèn) false -->
      <!--  <property name="useCompression">1</property>--> <!--1為開(kāi)啟mysql壓縮協(xié)議-->
        <!--  <property name="fakeMySQLVersion">5.6.20</property>--> <!--設(shè)置模擬的MySQL版本號(hào)-->
    <!-- <property name="processorBufferChunk">40960</property> -->
    <!-- 
    <property name="processors">1</property> 
    <property name="processorExecutor">32</property> 
     -->
        <!--默認(rèn)為type 0: DirectByteBufferPool | type 1 ByteBufferArena | type 2 NettyBufferPool -->
        <property name="processorBufferPoolType">0</property>
        <!--默認(rèn)是65535 64K 用于sql解析時(shí)最大文本長(zhǎng)度 -->
        <!--<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> -->
        <!--分布式事務(wù)開(kāi)關(guān)挤聘,0為不過(guò)濾分布式事務(wù)轰枝,1為過(guò)濾分布式事務(wù)(如果分布式事務(wù)內(nèi)只涉及全局表,則不過(guò)濾)组去,2為不過(guò)濾分布式事務(wù),但是記錄分布式事務(wù)日志-->
        <property name="handleDistributedTransactions">0</property>
        
            <!--
            off heap for merge/order/group/limit      1開(kāi)啟   0關(guān)閉
        -->
        <property name="useOffHeapForMerge">1</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協(xié)調(diào)切換  -->
        <property name="useZKSwitch">false</property>

        <!-- XA Recovery Log日志路徑 -->
        <!--<property name="XARecoveryLogBaseDir">./</property>-->

        <!-- XA Recovery Log日志名稱 -->
        <!--<property name="XARecoveryLogBaseName">tmlog</property>-->
        <!--如果為 true的話 嚴(yán)格遵守隔離級(jí)別,不會(huì)在僅僅只有select語(yǔ)句的時(shí)候在事務(wù)中切換連接-->
        <property name="strictTxIsolation">false</property>

        <property name="useZKSwitch">true</property>

    </system>

    <!-- 全局SQL防火墻設(shè)置 -->
    <!--白名單可以使用通配符%或著*-->
    <!--例如<host host="127.0.0.*" user="root"/>-->
    <!--例如<host host="127.0.*" user="root"/>-->
    <!--例如<host host="127.*" user="root"/>-->
    <!--例如<host host="1*7.*" user="root"/>-->
    <!--這些配置情況下對(duì)于127.0.0.1都能以root賬戶登錄-->
    <!--
    <firewall>
       <whitehost>
          <host host="1*7.0.0.*" user="root"/>
       </whitehost>
       <blacklist check="false">
       </blacklist>
    </firewall>
    -->

    <user name="mycat" defaultAccount="true">
        <property name="password">123456</property>
        <property name="schemas">kpcx,kpcx_coupon</property>
    </user>

    <user name="user">
        <property name="password">user</property>
        <property name="schemas">kpcx,kpcx_coupon</property>
        <property name="readOnly">true</property>
    </user>

</mycat:server>

注意:

Linux 下部署安裝 MySQL鞍陨,默認(rèn)不忽略表名大小寫(xiě)
需要手動(dòng)到/etc/my.cnf 下配置lower_case_table_names=1 使 Linux 環(huán)境下 MySQL 忽略表名大小寫(xiě),否則使用 MyCAT 的時(shí)候會(huì)提示找不到表的錯(cuò)誤从隆!

主要文件說(shuō)明

conf 目錄下存放配置文件
    server.xml 是 Mycat 服務(wù)器參數(shù)調(diào)整和用戶授權(quán)的配置文件
    schema.xml 是邏輯庫(kù)定義和表以及分片定義的配置文件
    rule.xml 是分片規(guī)則的配置文件诚撵,分片規(guī)則的具體一些參數(shù)信息單獨(dú)存放為文件,也在這個(gè)目錄下
    配置文件修改键闺,需要重啟 Mycat 或者通過(guò) 9066 端口 reload
. lib 目錄下主要存放 mycat 依賴的一些 jar 文件. 
日志存放在 logs/mycat.log 中寿烟,每天一個(gè)文件,日志的配置是在 conf/log4j.xml 中艾杏,根據(jù)自己的需要韧衣,可以調(diào)整輸出級(jí)別為 debug,debug級(jí)別下购桑,會(huì)輸出更多的信息畅铭,方便排查問(wèn)題.

schema.xml文件說(shuō)明 - dataHost標(biāo)簽

作為 Schema.xml 中最后的一個(gè)標(biāo)簽,該標(biāo)簽在 mycat 邏輯庫(kù)中也是作為最底層的標(biāo)簽存在勃蜘,直接定義了具
體的數(shù)據(jù)庫(kù)實(shí)例硕噩、讀寫(xiě)分離配置和心跳語(yǔ)句。現(xiàn)在我們就解析下這個(gè)標(biāo)簽缭贡。

name        唯一標(biāo)識(shí) dataHost 標(biāo)簽炉擅,供上層的標(biāo)簽使用辉懒。
maxCon      指定每個(gè)讀寫(xiě)實(shí)例連接池的最大連接。也就是說(shuō)谍失,標(biāo)簽內(nèi)嵌套的 writeHost眶俩、readHost 標(biāo)簽都會(huì)使用這個(gè)屬性的值來(lái)實(shí)例化出連接池的最大連接數(shù)
minCon      指定每個(gè)讀寫(xiě)實(shí)例連接池的最小連接,初始化連接池的大小快鱼。

balance     負(fù)載均衡類型颠印,目前的取值有 3 種:
            balance="0", 不開(kāi)啟讀寫(xiě)分離機(jī)制,所有讀操作都發(fā)送到當(dāng)前可用的 writeHost 上抹竹。
            balance="1"线罕,全部的 readHost 與 stand by writeHost 參與 select 語(yǔ)句的負(fù)載均衡
                        簡(jiǎn)單的說(shuō),當(dāng)雙主雙從模式(M1->S1窃判,M2->S2钞楼,并且 M1 與 M2 互為主備)
                        正常情況下,M2,S1,S2 都參與 select 語(yǔ)句的負(fù)載均衡袄琳。
            balance="2"询件,所有讀操作都隨機(jī)的在 writeHost、readhost 上分發(fā)跨蟹。
            balance="3"雳殊,所有讀請(qǐng)求隨機(jī)的分發(fā)到 wiriterHost 對(duì)應(yīng)的 readhost 執(zhí)行,writerHost 不負(fù)擔(dān)讀壓力
                        注意 balance=3 只在 1.4 及其以后版本有窗轩,1.3 沒(méi)有。

writeType   負(fù)載均衡類型座咆,目前的取值有 3 種:
            writeType="0", 所有寫(xiě)操作發(fā)送到配置的第一個(gè) writeHost
                            第一個(gè)掛了切到還生存的第二個(gè)writeHost痢艺,重新啟動(dòng)后已切換后的為準(zhǔn),切換記錄在配置文件中:dnindex.properties .
            writeType="1"介陶,所有寫(xiě)操作都隨機(jī)的發(fā)送到配置的 writeHost堤舒,1.5 以后廢棄不推薦。

switchType  切換類型
            -1 表示不自動(dòng)切換
            1 默認(rèn)值哺呜,自動(dòng)切換
            2 基于 MySQL 主從同步的狀態(tài)決定是否切換:心跳語(yǔ)句為 show slave status
            3 基于 MySQL galary cluster 的切換機(jī)制(適合集群)(1.4.1)心跳語(yǔ)句為 show status like ‘wsrep%’

dbType      指定后端連接的數(shù)據(jù)庫(kù)類型舌缤,目前支持二進(jìn)制的 mysql 協(xié)議,還有其他使用 JDBC 連接的數(shù)據(jù)庫(kù)某残。例如:mongodb国撵、oracle、spark 等玻墅。

dbDriver    指定連接后端數(shù)據(jù)庫(kù)使用的 Driver介牙,目前可選的值有 native 和 JDBC。
            使用 native 的話澳厢,因?yàn)檫@個(gè)值執(zhí)行的是二進(jìn)制的 mysql 協(xié)議环础,所以可以使用 mysql 和 maridb囚似。
            其他類型的數(shù)據(jù)庫(kù)則需要使用 JDBC 驅(qū)動(dòng)來(lái)支持。從 1.6 版本開(kāi)始支持 postgresql 的 native 原始協(xié)議线得。
            如果使用 JDBC 的話需要將符合 JDBC 4 標(biāo)準(zhǔn)的驅(qū)動(dòng) JAR 包放到 MYCAT\lib 目錄下饶唤,并檢查驅(qū)動(dòng) JAR 包中包括如下目錄結(jié)構(gòu)的文件:META-INF\services\java.sql.Driver。
            在這個(gè)文件內(nèi)寫(xiě)上具體的 Driver 類名贯钩,例如:com.mysql.jdbc.Driver

tempReadHostAvailable   如果配置了這個(gè)屬性 writeHost 下面的 readHost 仍舊可用募狂,默認(rèn) 0 可配置(0、1)魏保。

heartbeat   這個(gè)標(biāo)簽內(nèi)指明用于和后端數(shù)據(jù)庫(kù)進(jìn)行心跳檢查的語(yǔ)句熬尺。例如,MYSQL 可以使用 select user(),Oracle 可以使用 select 1 from dual 等谓罗。
            這個(gè)標(biāo)簽還有一個(gè) connectionInitSql 屬性粱哼,主要是當(dāng)使用 Oracla 數(shù)據(jù)庫(kù)時(shí),需要執(zhí)行的初始化 SQL 語(yǔ)句就這個(gè)放到這里面來(lái)檩咱。
                例如:alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'
            1.4 主從切換的語(yǔ)句必須是:show slave status

writeHost 標(biāo)簽揭措、readHost 標(biāo)簽
            這兩個(gè)標(biāo)簽都指定后端數(shù)據(jù)庫(kù)的相關(guān)配置給 mycat,用于實(shí)例化后端連接池刻蚯。
            唯一不同的是绊含,writeHost 指定寫(xiě)實(shí)例、readHost 指定讀實(shí)例炊汹,組著這些讀寫(xiě)實(shí)例來(lái)滿足系統(tǒng)的要求躬充。
            在一個(gè) dataHost 內(nèi)可以定義多個(gè) writeHost 和 readHost。
            但是讨便,如果 writeHost 指定的后端數(shù)據(jù)庫(kù)宕機(jī)充甚,那么這個(gè) writeHost 綁定的所有 readHost 都將不可用。
            另一方面霸褒,由于這個(gè) writeHost 宕機(jī)系統(tǒng)會(huì)自動(dòng)的檢測(cè)到伴找,并切換到備用的 writeHost 上去。

host        用于標(biāo)識(shí)不同實(shí)例废菱,一般 writeHost 我們使用*M1技矮,readHost 我們用*S1。

url         后端實(shí)例連接地址殊轴,如果是使用 native 的 dbDriver衰倦,則一般為 address:port 這種形式。
            用 JDBC 或其他的dbDriver梳凛,則需要特殊指定耿币。當(dāng)使用 JDBC 時(shí)則可以這么寫(xiě):jdbc:mysql://localhost:3306/。

user        后端存儲(chǔ)實(shí)例需要的用戶名字韧拒。
password    后端存儲(chǔ)實(shí)例需要的密碼淹接。
weight      權(quán)重 配置在 readhost 中作為讀節(jié)點(diǎn)的權(quán)重(1.4 以后)十性。
usingDecrypt    是否對(duì)密碼加密默認(rèn) 0 否 如需要開(kāi)啟配置 1,同時(shí)使用加密程序?qū)γ艽a加密

常用命令

mycat restart
mycat pause

mycat stop
mycat start

mycat status

## 前臺(tái)運(yùn)行
mycat console
## 添加到系統(tǒng)自動(dòng)啟動(dòng)(暫未實(shí)現(xiàn))
mycat install
## 取消隨系統(tǒng)自動(dòng)啟動(dòng)(暫未實(shí)現(xiàn))
mycat remove

附錄:

官網(wǎng):http://www.mycat.io/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末塑悼,一起剝皮案震驚了整個(gè)濱河市劲适,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厢蒜,老刑警劉巖霞势,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異斑鸦,居然都是意外死亡愕贡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門巷屿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)固以,“玉大人,你說(shuō)我怎么就攤上這事嘱巾『┝眨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵旬昭,是天一觀的道長(zhǎng)篙螟。 經(jīng)常有香客問(wèn)我,道長(zhǎng)问拘,這世上最難降的妖魔是什么遍略? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮骤坐,結(jié)果婚禮上墅冷,老公的妹妹穿的比我還像新娘。我一直安慰自己或油,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布驰唬。 她就那樣靜靜地躺著顶岸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叫编。 梳的紋絲不亂的頭發(fā)上辖佣,一...
    開(kāi)封第一講書(shū)人閱讀 52,196評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音搓逾,去河邊找鬼卷谈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛霞篡,可吹牛的內(nèi)容都是我干的世蔗。 我是一名探鬼主播端逼,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼污淋!你這毒婦竟也來(lái)了顶滩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤寸爆,失蹤者是張志新(化名)和其女友劉穎礁鲁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赁豆,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仅醇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了魔种。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片析二。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖务嫡,靈堂內(nèi)的尸體忽然破棺而出甲抖,到底是詐尸還是另有隱情,我是刑警寧澤心铃,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布准谚,位于F島的核電站,受9級(jí)特大地震影響去扣,放射性物質(zhì)發(fā)生泄漏柱衔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一愉棱、第九天 我趴在偏房一處隱蔽的房頂上張望唆铐。 院中可真熱鬧,春花似錦奔滑、人聲如沸艾岂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)王浴。三九已至,卻和暖如春梅猿,著一層夾襖步出監(jiān)牢的瞬間氓辣,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工袱蚓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钞啸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像体斩,于是被迫代替她去往敵國(guó)和親梭稚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容