# SD3.X簡介
>[danger]SD 已經停止維護,推薦使用ESD項目[ESD](http://www.hmoore.net/tmtbe/goswoole/1067764)
SD3.X版本是SD2.X的升級版,擁有SD2.X完整功能, 并在2.X的基礎上進行了大量的優化,其主要特性在與3.X版本使用了swoole2.x版本的擴展,利用swoole2.x內置的協程機制取代了php yield,使得書寫代碼上更加簡潔,如同同步書寫一樣,可以輕松的使用。3.X兼容2.X的絕大部分代碼,2.X升級到3.X相對來說比較輕松,會有專門章節介紹遷移事項。
## 優勢
* SD環境一鍵安裝
* SD項目成立時間長,經歷了多個線上項目的迭代,穩定性優異。
* 擁有眾多的功能模塊,幫助你實現業務代碼的編寫
* 天然支持分布式部署
* 擁有微服務架構,RPC支持
* 支持多端口多協議,可同時支持UDP,TCP,HTTP,HTTPS,WS,WSS等協議
* 異步連接庫豐富,支持redis,mysql,httpclient,tcpclient,mqttclient
* 進程管理完善,自定義進程管理和進程間通訊支持完善
* 支持定時任務可配置
* 支持AMQP分布式任務調度
* MVC設計模式
* 對象池內存管理,減少GC
* cli命令支持,可自定義命令
* VIP服務,支持1對1教學
## 全自動安裝部署
SD提供提供了運行環境的一鍵安裝部署,可用于全新系統的環境搭建。
執行下面命令將安裝SD3.X版本,包括所有環境,省心省事。
```
curl -sS sd.youwoxing.net/install_v3 | bash
```
將安裝部署的有:PHP7.1.14,Swoole2.X,以及框架需要的各種擴展。
## 智能路由
通過編寫自定義封裝器將獲得的消息解包。
通過編寫自定義路由可以將消息投遞到不同的控制器中。
通過調用Model可以將業務解耦。
## 多協議支持
可以開啟多個端口同時支持多種協議。
支持的協議有UDP,TCP,WS,HTTP,WSS,HTTPS,滿足日常開發需要。
不同端口可以擁有不同的封裝器,框架會根據封裝器自動封裝消息下發到客戶端,無需手動操作。
## 進程管理
用戶可以根據具體業務創建自定義進程,框架封裝好了進程的管理,可以輕松創建自定義進程。
自定義進程和worker進程間可以互相通訊,自定義進程間也可以互相通訊。
## Mysql/Redis連接池/協程
框架封裝了Mysql和Redis連接池,用戶調用方法時和同步用法一致,卻是異步的性能。
框架對協程的使用也進行了封裝,高級用戶可以通過繼承協程基類制作自己的異步協程方法。
## 發布/訂閱
框架提供發布訂閱接口,嚴格滿足MQTT協議定制的標準,卻不需要MQTT協議支持,可以在任何協議中使用。
## MQTT
提供MQTT異步客戶端,可以接入開源MQTT服務器。
框架也可以開啟簡易MQTT服務器,實現MQTT基礎功能。
## AMQP分布式任務調度系統
框架提供AMQP任務調度支持,可以通過RabbitMQ實現AMQP異步任務調度。
通過開啟自定義進程,可以為框架增加任務調度系統。
## Event
框架提供了Event事件模塊,可以通過監聽事件實現異步調用。并且這些事件可以在集群內廣播。
## GrayLog日志系統
接入了GrayLog日志系統,可以通過搭建GrayLog實現一套大型日志處理系統。
## 定時任務
通過TimerTask配置實現定時任務。
## 集群
框架設計本身自帶集群基因,所有的消息API均支持集群。
## 微服務
通過Consul實現服務注冊和監控,框架提供RPC方案。
## Actor
Actor模型,用于游戲開發,Actor間可以互相通訊,支持事務,支持分布式部署。
Actor很輕,服務器可以開啟幾十萬個,用于對游戲內單位進行模擬。
## Reload
開啟自動Reload后,代碼發生改變無需重啟服務器。
## CatCache
可落地的高速緩存,由PHP實現
- SD3.X簡介
- 捐贈SD項目
- VIP服務
- 基礎篇
- 搭建環境
- 使用Composer安裝/更新SD框架
- 啟動命令
- 開發注意事項
- 框架配置
- 配置文件夾
- server.php
- ports.php
- business.php
- mysql.php
- redis.php
- timerTask.php
- log.php
- consul.php
- catCache.php
- client.php
- 自定義配置
- 框架入口
- MVC架構
- 加載器-Loader
- 控制器-Controller
- 模型-Model
- 視圖-View
- 同步任務-Task
- 封裝器
- Swoole編程指南-EOF協議
- Swoole編程指南-固定包頭協議
- 封裝器-Pack
- 路由器
- TCP相關
- 綁定UID
- Send系列
- Sub/Pub
- 獲取服務器信息
- Http相關
- HttpInput
- HttpOutput
- 默認路由規則
- WebSocket相關
- 使用SSL
- 公共函數
- 進階篇
- 內核優化
- 封裝器路由器原理剖析
- 對象池
- 上下文-Context
- 中間件
- 進程管理
- 創建自定義進程
- 進程間RPC
- 自定義進程如何使用連接池
- 異步連接池
- Redis
- Mysql
- Mqtt
- HttpClient
- Client
- AMQP
- RPC
- 日志工具-GrayLog
- 微服務-Consul
- Consul基礎
- 搭建Consul服務器
- SD中Consul配置
- 微服務
- 選舉-Leader
- Consul動態配置定時任務
- 熔斷與降級
- 集群-Cluster
- 高速緩存-CatCache
- 萬物-Actor
- Actor原型
- Actor的創建
- Actor間的通訊
- 消息派發-EventDispatcher
- 延遲隊列-TimerCallBack
- 協程
- 訂閱與發布
- MQTT簡易服務器
- AMQP異步任務調度
- 自定義命令-Console
- 調試工具Channel
- 特別注意事項
- 日常問題總結
- 實踐案例
- 物聯網自定義協議
- Actor在游戲的應用
- Mongodb以及一些同步擴展的使用
- 自定義進程使用MQTT客戶端
- 開發者工具
- SDHelper