程序员全栈解决方案


努力搭建一个无偿分享通用技术框架组合的程序员全栈解决方案

谨慎选择技术栈技术架构,使用开源且无商业授权风险的工具集

广泛研究流行的技术框架,在深入理解基础上打磨统一的技术栈

每一个技术细节尽量简化,深入浅出实现原理,实现无依赖体系

众产监督基础架构 逻辑极简


用极简思维思考

用广泛研究统一

调研规划

快速设计原型图,与用户不断交流。
熟练使用RP、墨刀、Mockplus等工具。
使用CIY Item Creator快速创建移动端、管理端、大屏等原型。

重视原型沟通,降低研发成本,提升代码质量。
1、原型沟通,降低用户预期与研发理解的差异。
2、原型确认,有助于使编程思路清晰化,提高架构质量。
3、交互式原型几乎等同于实际交付效果,用户直观理解。
4、减少因预期偏差和理解偏差造成的返工和大范围修改。


前端思想

原生开发与组件式开发各自优势。
原生开发一般利用jquery等技术,实现快速响应,快速修改和部署,无需编译。
组件式开发一般利用vue、Svelte等技术,封装组件,使用现代化编译打包技术。
关注vm、performance等指标,在项目允许的情况下合理利用浏览器缓存。

前端选型。
高控项目一般采用原生开发,快速响应更新。
客户项目一般采用vue开发,保护源码,第三方组件拿来即用。
原生开发控制力强,内存占用少,适合开发明确且实用的产品。
vue开发控制力弱,内存占用大,且较少人能深入理解vue框架原理,以跑通为目的,产品稳定性差。
Svelte控制力较强,内存占用适中,但开发人员资源少,用人成本高,不熟悉框架,开发的产品稳定性更差。


后台管理

无论使用Golang、Python、PHP语言,都要选择一套自己能够驾驭的框架。自己能驾驭框架源码。
后台系统通常功能快速迭代,应以实用为主。不建议选择不了解且复杂的漂亮界面框架
避免使用过度封装的框架组件而产生依赖,越陷越深,自定义能力很差。


惯性优化

项目初建:
实现动静分离。独立域名做静态资源,所有css/js/img资源指向独立域名。
熟练使用CDN。设置好限流和证书缓存,开启http2。
图片缩略图化,CDN或nginx处理,或使用OSS等存储云。

集群扩容:
单点登录,实现跨域授权。
动静分离,WEB/DB分离,DB和WEB同一个内网。
增设WEB,本地化只读DB,多WEB集群演进,确保代码健壮。

微服务化:
纾解数据库压力,是微服务化的关键。
DB服务器分库、分表,水平拆分。
高频应用模块独立微服务化,用高并发语言重写。
以人为本,按照独立负责制拆解独立微服务模块,为不同语言制定统一架构标准。
增设服务网关、服务发现、自动扩缩缩容。
预实现跨网域部署服务器。


前沿技术

关注HTML5、CSS3、WebSocket、WebRTC、ES6、HTTP2、WebGL等新技术
使用大部分HTML5/CSS3新特性,如animation/vedio/RTC/canvas/localstorage/drag/manifest
全局实现WebSocket封装,自动重连及心跳包维持。
了解threejs/cesium/layaair/babylon/hbuilder等技术。
HTTPS/HTTP2成为主流,引用资源应兼容HTTPS。


APP/小程序

使用大前端聚合开发或2D游戏引擎开发。
H5套壳、h5多端编译、cocos/laya等2D游戏引擎,按项目需求和体量选择。
关注主流机型流畅性,适当前瞻未来物理机型性能提升。
组件封装,应借鉴成熟代码加以消化理解,为己所用。
充分利用CSS3动画,一致的单位规范,@media多屏兼容,@font/svg/base64代码化引用。
给设计使用的前端框架,Javascript不好调用的前端框架,都不是好框架。
H5开发主要风险是iOS苹果商店上架被拒,苹果态度暧昧,但大量的事实是可以上架。

CiySocket.js组件

100行Javascript封装Websocket前端,主要实现了自动重连及心跳包维持功能
保持HTML5官方规范调用模式
建议使用WSS 443端口通讯,不自定义
设置客户端发起的心跳包data、心跳包频率
设置重连间隔时间,可以设定多组时间,逐渐增加重连间隔时间,防止服务器过载
心跳包仅用于维持TCP通讯不被路由器关闭,现代网络环境下,客户端主动发起心跳即可

下载源码 (暂未整理)

PHP

自运营项目试错验证、外部项目快速交付。
1、制定统一框架脚手架,制定统一规则,包括前端、后端、数据表设计。
2、使用PHP7+workerman满足绝大部分需求,必要时使用C++扩展。
3、PHP源码增加自定义加密钩子函数,实现代码保护。
4、人才市场成熟成本低,只做快速交付。


GoLang

自运营项目高并发重构,外部项目微服务集群交付。
1、制定统一框架脚手架,制定统一规则,前后端及数据表设计。
2、通用服务: 发现服务(CiySDM)、网关服务(CiyGATE)、单点服务(CiySSO)、安全服务(CiySS)、日志服务(CiyLOG)。
3、发现服务实现微服务注册、健康聚合、自动扩缩容、配置管理、代码关系、黑名单、告警。
4、网关服务实现反向代理、灰度路由、验证授权、流量控制、黑名单、服务降级熔断、安全策略。
5、单点服务实现注册、登陆验证、多端验证、三方接口Auth2.0、独立静态页、多地部署。
6、安全服务实现操作系统审计、文件异动报告、数据拦截规则。
7、日志服务实现订阅、聚类、分级归档。


PHP教学框架

CIYPHP框架,结构极简,前后端分离,DBA与后端逻辑可分离。
封装了Mysql和PDO,数据库简化使用。
封装了加解密、混合url参数、极简结构数据、Ajax函数调用、安全传参、CSV解析等
data.php 封装了数据层,set接口实现了insert和update SQL命令整合。
数据库结构体文档生成工具、自动化代码生成工具、简易后端界面框架、定时执行任务。
实现了一套原型图快速生成工具,支持PC端中后台原型、移动端原型、数据大屏原型设计。
附加一套有限使用js的纯CSS效果的UI后台界面,建议自实现一个框架,不拿来即用。

Github 获取CIYPHP源码


无锁Socket框架

基于Workerman的PHP Socket框架,采用端口并发机制,基本实现了无需变量锁的编程方法
Workerman完全使用php代码,易于部署,易于完善底层代码。
编程过程可忽略变量锁,降低开发复杂度。提升效率。
建议与CiySocket框架结合使用

下载源码

Linux部署和调优

使用统一的部署方案,统一维护,统一安全支持,高一致性的运维。
Nginx反向代理、处理缓存及图片前置处理。
MariaDB、PostgreSQL、TDEngine三大数据库系统标准部署按需使用。
按长连接、短连接及大数据处理(AI容器)三个维度分别制定内核调优配置方案。

部署文档


代码编写

前置评审、调用描述监控、自测覆盖。
统一使用无状态模式开发。
涉及多主库事务、长周期接口交互、强引用对象使用、三方库,需前置评审。
避免缓存服务集群、有效利用CPU/GPU/NPU。
渐进式开发框架,实现单服务到微服务的代码级过渡,服务调用点描述规范。


服务器运维

从单机房多服务器到多机房可伸缩多服务器群的演进。
标准环境,单服务器运维,git触发部署。
动静分离,主DB独立,DB实时同步备份。
web集群+只读DB。
主DB垂直水平拆分,多主互备。
实施微服务架构,应用服务以人为本拆分。
微服务可伸缩集群,只读DB+边缘DB可伸缩集群。
多地集群部署,建立系统级信道。
OpenStack自建云机房,国产指令集核心,节能降耗。

服务器安全

容器安全、子网安全、入口安全、链路安全。
最小化配置运维入口,多VPN链路,实现逐级开启,逐级关闭。
设置蜜罐服务,服务器差异审计上报,标准化安全配置。
多地专线链路按最小访问来源配置。
完成二级等保、三级等保,甚至四级等保。聘请绿盟等安全公司经常渗透。


代码安全

代码分级审计,技术前置审批,资源使用规范。
按照增删改查调接口、服务器文件操作、服务器命令执行三个维度进行分级审计。
前置审批项包括但不限于多主事务、文件资源存储、可执行脚本等方面。
前端业务Web接口封装,不直连数据库。
审计所有输入来源判断,用风险攻击数据测试输入来源过滤可靠性。

设计能力

软件工程师,也需要有一些设计能力。
至少熟练掌握Photoshop,切图、图片加工等图片处理。
至少购买1个商业设计网站的会员,方便下载成品图。
至少掌握一个图标设计库,如iconfont。
有意识的搜集整理好看的界面模板或截图。
将已经用过的图片素材,放到一起保存。
目前已整理超过1TB的优秀设计稿及一个设计师平台。