# SD3.X简介
>[danger]SD 已经停止维护,推荐使用ESD项目[ESD](https://www.kancloud.cn/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