`
timeson
  • 浏览: 146057 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

从项目开发到云端架构(16)

 
阅读更多

5      PaaS DIY

       PaaS是一个软件层,通常连接网络资源包括操作系统实例、数据库服务器实例、网络服务器实例,甚至负载均衡,并连成一个单一的,共享的逻辑承载层,提供按需硬件和操作系统服务,而且还提供应用程序平台和解决方案堆栈。

       PaaS 服务可将与应用程序部署关联的大多数 IT 管理方面自动化,包括资源配置、分段和测试、负载平衡、数据库访问以及访问平台库。PaaS 的关键功能是多组织体系结构:即多个不相关的应用程序可运行在相同的硬件和软件基础设施上,从而节约成本以及更有效地利用计算资源。开发人员只需关注应用程序本身,而不需要关注部署和 IT 问题。

      

       那在本章节里面,我们自己根据对PaaS的理解和体会,自己动手拔一拔paas系统里面的这些东西,正如“幸福要靠自己勤劳的双手”一样,要感知或者实践paas平台对业务系统的支撑和帮助,就要对Paas内部也要需要深入的了解,打开黑匣子,搜集一些相关的工具和零件,搭建自己的Paas平台。个人认为paas平台其实不算复杂,只是比10年前搭建SSH框架要稍微复杂一些,呵呵,这样吧,现在旮场。

 

       我们假设几个场景,分布针对不同规模的业务场景。正如前文所述:传统的web应用的架构,在用户期望移动设备和桌面有更佳体验的要求下已经不堪重负,新的架构呼之欲出。也就是说Paas平台帮我们解决部署上的麻烦:简单的部署 + 应用的管理 + 简单的扩展;并提供一些基础平台服务:WEB应用服务器 + SQL数据库 + NoSQL数据库 + 内存服务器 + 消息服务器;但我们自己的web应用需要实现:在应用层面的可水平扩展的服务器 + 模块化的组件,可被拆分和扩展 + 异步的架构,在数据层面的复制 + 分片 +多存储(关系数据库,nosql,内存等),这样应用的业务架构示意图如下:

 

 



 

50-01 推荐模式

 

       在这个通用的业务架构中,其特点为模块松耦合+请求无状态+通讯异步化。业务架构和paas平台各司其职,相互分工协作。从cloudfoundrycloudify再到Jelastic,部署越是简单的,它的业务扩展能力其实就是越弱,到了Jelastic,虽然部署非常的简单,简单到只有传个war包即可,但性能的伸缩完全依赖于paasroute(这里是nginx)来实现,扩展有限。所以好的paas平台,不单单是看其提供服务的多寡,支持的语言丰富,还要看是否为部署的应用架构提供了高可用,可水平扩展的业务架构模式。

       前文阐述了paas的功能,假设我们需要为自己手头上一堆运行着webdb的服务器实例进行管理和部署,如果按照paas的能力强弱进行等级划分,自己DIY一把,看看能提供什么,需要什么,我们自己又能做些什么。

5.1  DIY before

       diy之前,还有些准备工作需要去做,一些基础知识需要了解。PaaS平台中堆砌了大量的开源软件,它的运行机制其实不会超出我们平时的理解范畴之外,只是选择了某种分布式模式,进行了合理的搭配以及作了自动化处理,有些组合和彼的衔接,所以了解常用的开源软件以及它们的工作方式与应用特点,对于我们的diy大有裨益。这些知识点大致的梳理了一下,我分为如下的内容:

知识点

说明

备注

11.web应用

互联网常用和web相关的应用,包括:

apachetomcatwarnishsquid memcachedredis

 

12.备份恢复

 

 

13.网络存储

 

 

14.运维监控

Nagioscaicti以及日志管理等,对系统进行监控

 

15.性能优化

针对架构层面的对系统的优化

 

16.应用集群

包括了tomcatnginxlvs的集群方式

 

17.数据集群

数据库的集群方式,在互联网中一般采取mysq,借助drbdheartbeat的能力

 

18.通用服务

在互联网应用中常用的,包括:

防火墙,dnsvpn,邮件服务器等

 

19.部署架构

业界通用的集群部署架构模式,通常有

Lvs+keepalived / nginx+keepalied

Drbd+heartbeat+nfs/mysql 的混合模式

其中会涉及到几种session的管理方式,paas平台的负载均衡能力也是之前所述方式的一种

通用的模式在这里说明,大中小项目中再举具体的范例

20.持续交付

对于营运类型的项目,会持续的更新和部署,需要采用合适的脚本和持续集成来进行

典型的包括puppet/chef+svn+jenkins

主要在diy after章节阐述

51-1diy知识点

 

       这里和paas diy比较紧密关系的是部署架构,顺带会穿插阐述应用集群和数据库集群以及web的服务相关的内容,所以在diy before的章节中说明;持续交付和运维监控,则是运营和管理的内容了,自然在diy after的章节中阐述。

 

5.1.1            基础介绍

 

       负载均衡:在现有网络结构上提供廉价方式来扩大服务器带宽,增加吞吐量以及数据处理能力。常用负载均衡的硬/软件如下,按照均衡能力排列:

  • F5 big-ip:可以作4-7层的负载均衡,因为是硬件,自然均衡能力是最好的,并提供12种均衡能力的算法、会话保持功能以及自动检测故障机器等功能。
  • LVS:是一个负载均衡/高可用集群,具有3层结构(load balancer/server pool/shared storage),提供3种实现虚拟机实现方式(vs/netvs/tunvs/dr),特点是:
    • 在负载均衡软件里的性能最强;因为在网络4层之上仅作分发之用,没有流量产生。
    • 配置性比较低,所以并不需要太多接触,减少人为出错的几率。
    • 工作稳定,自身有完整的双机热备方案,如LVS+Keepalived(推荐)LVS+Heartbeat
    • 无流量,保证了均衡器IO的性能不会收到大流量的影响。
    • 应用范围比较广,可以对所有应用做负载均衡。
    • 软件本身不支持正则处理,不能做动静分离,可以结合nginx/HAProxy+Keepalived
  • HAProxyHAProxy是一款提供高可用性、负载均衡以及基于TCP4层)和HTTP7层)应用的代理软件。
    • 免费开源,稳定性也是非常好,稳定性可以与硬件级的F5相媲美。
    • HAProxy 支持连接拒绝,这个优点也是其它负载均衡器没有的。
    • HAProxy 支持全透明代理(已具备硬件防火墙的典型特点)。
    • HAProxy现多于线上的Mysql集群环境,我们常用于它作为MySQL(读)负载均衡;
    • 带强大的监控服务器状态的页面,实际环境中可结合Nagios进行邮件或短信报警。
    • HAProxy支持虚拟主机。
  • Nginx:基于第7层的负载均衡,支持httpmail的均衡,特点:
    • 承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
    • 工作在网络的7层之上,提供的正则处理比HAProxy更为强大,轻松实现动静分离。
    •  对网络的依赖非常小,能ping通就就能进行负载功能。
    • 可通过端口检测到服务器内部的故障。
    • 仅能支持httpEmail
    • 作为中间代理层,对于大型网站可能的架构为F5/LVSàNginx(多台)àweb集群。

 

       高可用:狭义说是主机的冗余接管,广义说是整个系统高可用的能力,并和lvs/haproxy/nginx结合起来,形成负载均衡/高并发的生成解决方案。

  • Keepalived:运行在lvs之上,主要功能是实现真实机的故障隔离和负载均衡器之间的失败切换(failover),工作在第3/4/5层。keepalived产生的虚拟vip就是整个系统对外的ip,如果最外端的防火墙采取的是路由模式,那就映射此内网ip为公网ip
  • Heartbeat:和drdb一起应用于在线的高可用文件系统;也是mysql官方推荐的实现mysql高可用的一种手段。
  • DRBD:分布式复制块设备,支持3种复制协议:异步复制协议,内存同步,同步复制。在线项目可以采用协议3drbd+heartbeat+nfsdrbd+heartbeat+mysql

 

5.1.2          部署层次

       典型的互联网系统架构一般分成负载均衡层、网页缓存层、 WEB层和数据库层和文件服务器层。这里在了解每一层在网站设计中的作用和重要性,找出网站瓶颈加以优化,将网站打造成高可用高可扩展性的网站。下面从和5个层面依次讨论

 

1、负载均衡层

  • Lvs+ Keepalived模式:现在linux系统已经内置了lvs功能,为了避免lvs的单点故障的出现,采取主备模式,有2种高可用软件,这里采取keepalived,本身keepalived就是为lvs设计的,监控集群系统种各个服务节点的状态。LVS在性能方面是最好的,尤其是后面的节点(WebMySQL数据库服务器)超过10台时,它的性能是最优异的。
  • HAproxy+Keepalived模式 
  • Nginx+Keepalived模式:负载均衡层采取nginx,用keepalivedHA。因为nginx在正则处理以及分发和动静分离效果好,在backup机实现cacti+nagios实现实时监控。如果不在web层处理session问题,那就在负载均衡层处理,采用粘性会话能力,启用ip_hash功能。不过因为自身限制,只能支持web集群和mail集群。
  • Lvs + Keepalived + nginx模式  Nginx作为最前端的负载均衡并不是一个非常理想的选择,一个大型的网站或系统的 话,可以存在多级代理,最前端可用F5 LVS来作为网站或系统的入口,让它们来顶外部的高并发流量,而Nginx由于其强大的正则处理能力,可以作为中层代理,一来可以作为F5/LVS的补 充,节约大量成本,形成F5/LVS -->Nginx(多台)-->web集群的模式:
    • Nginx负载均衡不存在单点;
    • Nginx作为F5的补充,利用upstream模块和正则,实现动静分离;
    • 压缩可以通过nginx做,后端应用服务器可以不用考虑压缩,提供通用解决方式。
    • 方便的运维管理,在各种情况下可以灵活制订方案;
    •  即使没有squid群组,Nginx现在可以做为优秀的反向代理加速软件了。

  

2、网页缓存层

       网页存储,通常使用squid/Varnish来架设。如果没有独立的web缓存服务器,可使用nginx本身的功能。varnihs是一款比squid更好的产品,网聚的同事已经在使用。

 

3WEB

       WEB层这块压力比较大的网站现在都换成了Nginx作为WEB应用服务器,事实上,它的抗并发能力确实超过了预期,高峰期时Nginx并发达到了一万以上,这个是很可观的数字了。

Session管理

  •  粘性会话()
  • session共享(基于cookie,基于数据库,基于缓存)

 

会话保持:识别客户和服务器交付过程的关联性,在负载均衡的同时,保证一系列相关联的访问请求被分配在同一台服务器上。

  • F5 big-ip:简单会话保持,基于cookie会话保持,ssl session id会话保持。
  • Lvspersistence机制
  • Nginxupsteam模块的ip_hash机制。
  • Haproxybalance source机制(默认是轮询)

 

 

 



 

51-01:网站部署

 

       这里包括http加速服务器,数据缓存服务器以及共享式文件存储。这里用tomcat/jetty泛指web应用层,在具体架构的时候,也许这里会被拆分为业务拆分或者前后端拆分,这里用简单框图来表述。整个负载均衡层和Web层的工作流程为LVS_DR/nginx+KeeaplivedNginx反向代理(动静分离)→Tomcat集群,可以保证整个网站不会因为某一台LVS/nginxNginx+tomcat机器挂掉而影响网站的运营。如果采取的是lvs+keepalivedtomcat之前一定需要nginx,因为部署的网站一般都会有动静分离、正则分发的需求。

       web服务器由nginx+tomcat来处理,提供反向代理,动态静态资源分离和静态文件压缩。

       Web缓存层被独立层单独的一层,使用varnihssquid。如果没有独立的web缓存服务器,可使用nginx本身的功能。如果有独立的web缓存服务器,varnihs是一款比squid更好的产品,网聚的同事已经在使用。

       缓存服务器是针对业务系统的数据的缓存,用于减轻业务系统对数据库的IO压力。

       文件存储层被独立成单独一层。在下面部分讨论。

 

 

4、文件服务器层

       如果没有采取共享存储,每台web服务器都是独立的磁盘,需要本地均存放一份代码,为了保证多台web服务器的代码数据一致性,使用rsync+inotify实现动态同步。

       倘若硬件条件允许的情况下,推荐使用网络文件系统或者分布式文件系统来存储,方案见下;

  • NFS+备份NFS作为文件服务器,但存在着单点故障,需要人为手动干预;
  • DRBD+Heartbeat+NFS高可用文件服务器,维护方便,也不存在着单点故障。
  • 采用EMC的存储方案
  • 分布式文件系统MFS等,分布式文件系统是解决文件服务器压力过大的最终途径。
  •  开发自己的分布式文件系统了,

  

 

5、数据库层

       互联网应用中一般采用MySQL数据库(但关键核心系统采用oracle,形成mysql+oracle的混合数据库模式)。面对并发的压力,可以采取如下步骤:

  • 系统采用memcached作为数据缓存,减少对数据库的IO
  •  采取读写分离的模式,在生产环境下是一种靠谱的设计方案,从服务的负载均衡推荐使用LVS,因为当后面的MySQL机器超过十台时,HAProxy在这方面的性能不如LVS
  •  如果业务量过大,接着可采用垂直分库,每一组均采用主从架构,这样可避免了单组数据库压力过大的情况。不建议采用水平分库的模式,原因在前面的章节已经阐述。
  • 另外需要DBA和开发人员,在数据库参数优化/SQL语句优化/数据切分上多做功夫。

 

5.1.3            部署架构

       网站架构一般分成负载均衡层、web层和数据库层,文件服务器层,随着网站的PV越来越多,文件服务器的压力也越来越大;不过随着moosefsDRDB+Heartbeat+NFS的日趋成熟,压力会随着技术的进步而得到逐步的缓解。

       网站最前端的负载均衡层称之为Director,起分摊请求的作用,最常见的就是轮询。

       F5是通过硬件的方式来实现负载均衡,它较多应用于CDN系统,用于squid反向加速集群的负载均衡,是专业的硬件负载均衡设备,尤其适用于每秒新建连接数和并发连接数要求高的场景;LVSNginx是通过软件的方式来实现的,但稳定性也相当强悍,在处理高并发性能不俗。

       目前较成熟的负载均衡高可用技术有LVS+KeepalivedNginx+Keepalived,以前 Nginx没有成熟的双机备份方案,但通过shell脚本监控是可以实现的,有兴趣的可具体参考我在51cto上的项目实施方案;另外,如果考虑 Nginx的负载均衡高可用,也可以通过DNS轮询的方式来实现。

       负载均衡高可用中的高可用指的是实现负载均衡器的HA,即一台负载均衡器坏掉后另一台可以在<1s秒内切换,最常用的软件就是KeepalivedHeatbeat,成熟的生产环境下的负载均衡器方案有Lvs+KeepalivedNginx+Keepalived;如果能保证Heartbeat的心跳线的稳定的话,Heartbeat+DRBD也是成熟的应用,适用于NFS文件服务器或Mysql

 

       大型网站架构中其实可以结合使用F5LVSNginx,选择它们中的二种或三种全部选择;如果因为预算的原因不选择F5,那么网站最前端的指向应该是LVS,也就是DNS的指向应为lvs均衡器,lvs的优点令它非常适合做这个任务。重要的ip地址,最好交由lvs托管,比如数据库的ipwebservice服务器的ip等等,这些ip地址随着时间推移,使用面会越来越大,如果更换ip则故障会接踵而至。所以将这些重要ip交给lvs托管是最为稳妥的。

       VIP地址是Keepalived虚拟的一个IP,它是一个对外的公开IP,也是DNS指向的IP;所以在设计网站架构时,需要多申请一个对外IP。在项目实施过程中发现,LvsNginxhttps的支持都非常好,尤其是LVS,相对而言处理起来更为简便。

       LVS+KeepalivedNginx+Keepalived的故障处理中,二者都方便;如果发生了系统故障或服务器相关故障,即可将DNS指向由它们后端的某台真实web,达到短期处理故障的效果。

       另外关于session共享的问题:Nginx可以用ip_hash机制来解决;而F5LVS都有会话保持机制来解决这个问题,此外,还可以将session写进数据库,或者写入缓存,这就需要架构师进行取舍。

 

       经过对负载均衡层和web层的架构处理,前端层的并发问题解决后,压力就会传递给后端的文件服务器层和数据库层,单NFS不可能胜任目前的工作,可行的方案是moosefs DRDB + Heartbeat + NFS;而Mysql服务器,成熟的应用方案还是主从(读写分离)模式。     

 

 

 

 

       前面铺垫了这么多内容,无非想说明大规模网站的设计和部署,其实并不遥远和神秘,它和我们周边开源软件息息相关,借用作者的智慧,以及自己付出一些实践的成果,我们也能在互联网的浪潮中不至于被远远的落下,作为本章节的收尾,后续将开展我们的diy行动,其实可见我们的diy paas平台在部署上和别人的大规模网站的部署何其相似,所以说在互联网时代没有黑箱,只有白盒,借助自己勤劳的双手自行diy,深刻感受一下Pass平台的嬲塞魅力把,所以请大家正襟危坐,全神贯注,目不斜视,现在旮场,进入我们的diy阶段。

       本身Paas平台博大精深,内容庞杂,业界也有很多不同的方案和产品,每个解决方案都有自己的亮点和适用场景,并不没有所谓的好与坏,好与底。能解决自己的问题,提升公司的整体技术能力,就是合适的,所以在这里对Paas平台稍微归类,纯属个人行为,只为了阐述方便,不代表业界通用说法。这里我按照PaasCloudControl作为类型的区分,可以分为3个时代:

  • 脚本式CC(奴隶时代):由脚本构筑,没有明确的cloudControl,部署/管理/监控采取的是脚本和自动调度程序,再配合特定的模板和规则。系统处于堆砌方式,需要运维人员的强烈管理意识,依赖众多劳苦的IT民工,所以处于奴隶时代。
  • 独立式CC(封建时代):有独立的cloudcontrol对整个paas云端进行管理,包括部署,发布监控等,cc和部署的应用之间是有状态的,也就是说ccapps的关系是1:n的关系。部署简单,监控有力,因为带有状态,部署的apps的个数有限,如果借助某种定义语言或者模板来说明部署方式,将极大的简化部署工作,可实现noops的能力。因为此时已经有了类似家族管理的作风,CC就是家长,强调规范化调理化,家族内部次序井然,所以处于封建时代。
  • 分离式CC(资本时代):有多个独立的cloudcontrolcc本身是多节点,对外统一暴露,ccapps之间没有状态关联,而是通过某种消息机制建立发布和订阅关系,ccapps的对应关系是n:m,可部署相当多的apps服务。为了整个云端能良好的运行,需要进行良好的维护。整个系统庞大而次序井然,分工明确各司其职,各个组件都是独立而平等,通过发送和订阅的方式,整个系统进行着步骤有序的运转,所以处于资本时代。

 

上一篇 从项目开发到云端架构(15)  :http://timeson.iteye.com/blog/1701957

下一篇 从项目开发到云端架构(17)  :http://timeson.iteye.com/blog/1707071

  • 大小: 30.6 KB
  • 大小: 35.5 KB
1
6
分享到:
评论
1 楼 clongjava 2012-10-22  
好文,必须顶

相关推荐

    模拟云端系统项目

    【模拟云端系统项目】是一个综合性的IT项目,它结合了前端和后端技术,旨在构建一个功能完善的云端应用。...这样的项目实践能帮助开发者深入理解云端应用的开发流程和架构设计,提升在分布式系统中的实战能力。

    云端第三代系统开发

    在当前数字化时代,"云端第三代系统开发"是一个重要的议题,它涉及到如何利用先进的技术构建高效、易用且灵活的云服务平台。在这个系统开发过程中,Java作为主要编程语言扮演着核心角色。下面我们将深入探讨这个话题...

    云端系统源码第二版

    云端系统源码第二版是一个...综上所述,云端系统源码第二版是一个涉及多方面技术和实践的综合项目,涵盖了从底层基础设施到上层应用服务的全方位设计。深入理解和掌握这些知识点对于开发、运维和管理云端系统至关重要。

    android基于webservice云端运用最新代码EasyEnglish

    在Android开发中,结合Web服务(Webservice)可以实现丰富的云端功能,比如数据同步、远程API调用等。"android基于webservice云端运用最新代码EasyEnglish"是一个示例项目,展示了如何在Android应用中集成Webservice...

    wiki云端知识库平台项目

    以上内容仅是对“wiki云端知识库平台项目”可能涉及的技术栈和概念的一个概述,具体实现可能根据开发团队的选择和技术栈有所不同。对于学习者来说,深入理解并掌握这些知识点,将对个人的技能提升和未来职业发展...

    鸿蒙Linux+项目文档+开发工具+harmonyOS+在线开发地址.rar

    综上所述,这个压缩包是鸿蒙OS开发者的一站式资源库,涵盖了从系统底层到应用开发的各个环节,对于想要涉足鸿蒙OS领域的开发者而言,是一个宝贵的资料集合。通过深入学习和实践,开发者可以更好地掌握鸿蒙OS的开发...

    自制云端脚本获取器

    “云端”意味着它涉及到云存储或云计算的服务。“脚本”指的是可执行的代码文件,如JavaScript、Python等,可能是网页脚本或者其他类型的程序。“获取器”和“下载器”则说明了工具的功能,即获取并下载云端的脚本...

    C#项目开发全程实录-源代码

    通过研究这些源代码,初学者可以学习到实际项目开发中的最佳实践,而有经验的开发者则可以借鉴其中的设计模式和问题解决策略。无论是独立学习还是团队协作,这个资源都能提供宝贵的经验和洞察。

    悟空项目管理-基于Spring Cloud Alibaba微服务架构 +vue ElementUI的前后端分离项目管.zip

    9. **部署与运维**: 项目可能还包含了部署和运维相关的文档,例如Dockerfile或者Kubernetes配置,帮助开发者将应用部署到云端或本地环境。 这个项目不仅提供了实际的代码实现,还可以作为学习微服务架构、前后端...

    云计算系统架构文档 汇总上

    DevOps 从云端到地面 熊节 pdf DevOps 让持续交付成为可能 乔梁 pdf eBay技术平台:掌控十亿级交易数据 Tony Ng pdf Facebook大数据实时分析案例分享 Uri pdf Java EE 7 平台:应云而生 Tyler Jewell pdf JS ...

    SRA2021-G03-项目开发计划1.81

    总结,SRA2021-G03-项目开发计划1.81是一个旨在构建云端知识库APP的详尽蓝图,涵盖了项目从需求分析到实施、测试、上线及后续维护的全过程。通过这个计划,团队能够有序地进行开发工作,确保知识库应用能高效、安全...

    JSP+SSM项目-云端学习系统的Java毕业设计.rar

    JSP+SSM项目-云端学习系统的Java毕业设计.rar 【项目技术】 开发语言:Java 框架:ssm+jsp 架构:B/S 数据库:mysql 【演示视频-编号:345】 https://pan.quark.cn/s/b3a97032fae7 【实现功能】 端学习系统在...

    SRA2021-G03-项目开发计划1.71

    【SRA2021-G03-项目开发计划1.71】是关于一...总之,"SRA2021-G03-项目开发计划1.71"是一个全面的项目管理文档,它涵盖了项目从启动到完成的所有关键环节,旨在确保团队高效协作,成功开发出满足需求的云端知识库APP。

    SAAS架构设计模式SAAS架构设计模式

    它的出现是为了解决软件开发和维护的成本问题,通过将软件部署到云端,提供基于互联网的软件服务,用户可以通过互联网访问和使用软件。 SAAS 架构设计模式的优势包括: 1. 用户方面:拿来即用,无须维护,按需使用...

    构筑大语言模型应用:应用开发与架构设计.zip

    《构筑大语言模型应用:应用开发与架构设计》是一份深度探讨大语言模型在实际应用中的开发和架构设计的资源集合。这份资料来源于GitHub上的开源项目phodal/aigc,旨在帮助开发者理解和利用大语言模型的技术,提升...

    Android-物联网环境监测数据中心-物联网项目开发

    在物联网项目开发中,可能还需要特定的物联网协议解析或设备模拟插件。 3. **物联网架构**: 物联网环境监测系统通常包含传感器节点、网关和云端平台三个部分。传感器节点负责采集环境数据,如温度、湿度、光照等...

    Android项目开发报告 (2).pdf

    总结,本Android项目开发报告全面展示了项目开发的各个方面,从底层的平台架构到上层的功能实现,再到数据库和项目组织,为开发者提供了清晰的开发指南。通过这样的报告,不仅可以评估项目的成熟度,也便于团队协作...

    微信小程序项目源码云开发cloudtest.zip

    9. **版本控制**:在项目开发过程中,版本控制非常重要。微信开发者工具允许开发者进行代码版本管理,便于团队协作和回滚更改。 10. **发布与更新**:完成开发后,开发者可以在微信开放平台上提交审核,待审核通过...

    基于 Hyperf v2.1+VUE Primen 开发的号卡分销系统,号卡系统,物联网卡系统,saas云端智能架构.zip

    基于PHP、MySQL等技术构建的web系统,框架,PHP学习,课程设计作业,可用于毕业设计,源码项目,可直接运行,实测! 基于PHP、MySQL等技术构建的web系统,框架,PHP学习,课程设计作业,可用于毕业设计,源码项目,...

Global site tag (gtag.js) - Google Analytics