日期: 2022-09-20 15:50:13 浏览数:3

上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
平凉网站建设【平凉网络公司】平凉做网站、平凉微信公众号开发、平凉网站设计、平凉小程序制作

平凉,是甘肃省辖地级市,甘肃省人民政府批复确定的甘肃省域副中心城市,丝绸之路经济带重要节点城市,陕甘宁结合部以文化旅游和工贸物流为主的生态宜居城市。截至2020年4月,全市辖1个区、1个市、5个县,总面积1.1万平方公里,2019年末常住人口212.53万人。 [1-2]
平凉地处中国西北地区,甘肃省东部,陕甘宁三省(区)交汇处,东邻陕西咸阳,西连甘肃定西、白银,南接陕西宝鸡、甘肃天水,北倚宁夏固原、甘肃庆阳。是西北地区重要的公路枢纽,欧亚大陆桥第二通道的重要中转站,甘肃东部重要的交通枢纽、商贸重镇和区域性中心城市,素有“陇上旱码头”之称。 [1]
平凉是中华文明的发祥地之一,早在3000多年前,周朝就在泾河流域创造了比较先进的农耕文化。公元376年,前秦灭前凉,取“平定凉国”之意,置平凉郡,平凉之名自此始。平凉境内历史文化遗存众多,已发现仰韶文化、齐家文化等各个时期的文化遗址2257处。崆峒山道源文化、古成纪伏羲文化、西王母远古文化、皇甫谧医学文化独具魅力。 [1]
市内有5A级旅游景区崆峒山、云崖寺、南石窟寺、泾川王母宫、崇信龙泉寺等名胜古迹,被评为中国优秀旅游城市、中国顾客最满意的十大风景名胜区、中国最值得外国人去的50个地方之一。 [1] 2018年12月,2018魅力中国城十大魅力榜单发布,平凉荣获“年度魅力文旅扶贫城市”。 [3] 2019年10月,被确定为“第三批城市黑臭水体治理示范城市”。 [4] 2020年10月,被评为全国双拥模范城(县)。
经历了一定岁月的项目系统,往往会变得臃肿、庞大、混乱。这是因为里面需要处理各种数据,而这些数据的来源更为多种多样,如来自文件、来自数据库、来自高效缓存、来自第三方平台接口。虽然PhalApi提供了Model层和Model代理层来统一负责这些不同来源的数据的处理,但若想得到更明确的划分、更一致的管理,还需要更细致的应对方案。
先来简单回顾一下中学时间所学的化学方程式。

)
图2-7 一条化学方程式
上面是指二氧化碳和水在加热情况下可生成碳酸。化学方程式左边是反应前的分子,右边是反应后的产物。
类似地,在我们系统这个大环境下,在不同的场景下也会有不同的原材料,再根据不同的目的生成相应的数据产出物。这与化学反应有是点相似的。如果我们把数据的加工、处理看作化学的反应过程,而把数据源当作反应前的物质、把最终的页面数据比作化学的产物,我们可以得到这样一个类比:

图2-8 类似化学方程式的数据处理
这是一种以分子/原子的视角来看待数据,由此我们可以知道每份数据都会有其本身的一些特性,如:大小、稳定程度、名字、组成的结构等。若按数据的稳定程度分轨道划分,我们可以看到原来混沌的数据分布将显得有序、可视化。

图2-9 划分前后的数据分布
由分子组成的化学物质,有活泼、稳定之分。越活泼的物质变化越快,反之,越稳定的物质变化缓慢,可以放置很长一段时间。同样,对于接口服务系统中的数据,有的需要频繁更新甚至实时更新,如商品库存;有的则相对稳定,不需要频繁更新并在业务上可以接受一定时间的延时,如商品的信息;有的甚至非常稳定,通常很长的时间内都不会发生变化,如全站的通用的开关配置。
因此明显地,为了在高效缓存和实时性之间取得更好的平衡,我们需要为不同的业务数据,根据各自的稳定程序,为其选择不同的缓存策略。以便得到合理的划分,分配正确的缓存策略。
通过上面新视角的划分,结合数据的使用场景,我们可以得到数据稳定-访问象限分布图。

图2-10 数据稳定-访问象限分布图
在进行了这么多理论的说明后,让我们结合个示例来实践一下。
假设,我们的Shop商城项目中,有三种缓存机制,分别是:
实时数据,无缓存
轻量级缓存,只使用本地服务器缓存,特点是快但不可共享
重量级缓存,同时使用本地和集群服务器的高效缓存,特点是可共享但有网络I/O消耗
则可以创建三个对应的模型代理目录,如下:
$ tree ./Shop/ModelProxy/ ./Shop/ModelProxy/ ├── Heavy # 重量级缓存├── Light # 轻量级缓存└── Realtime # 实时数据
并且,假设我们有四份这样的数据:
来自数据库的商品信息
来自第三方接口系统的推荐商品
来自配置文件的全局站点配置
经过分析数据的稳定性和来源,可以得到以下这样的缓存策略分配。
表2-10 业务数据的缓存策略示例
业务数据 | 缓存策略 | 考虑点 |
|---|---|---|
商品信息 | 重量级缓存 | 商品信息可共享缓存,并且访问量大,需避免DB穿透 |
推荐商品 | 实时数据 | 每个用户所看到的推荐商品不一样,需要千人千面 |
站点配置 | 轻量级缓存 | 适合使用单机缓存,且允许回源到文件 |
在Model层的目录里,默认情况下,数据来源于数据库。如果有其他来源的数据,可在Model目录里面添加子目录,以示区分。如添加以下目录:
$ tree ./Shop/Model/ ./Shop/Model/ ├── Connector # 连接器,与外部接口进行通信├── File # 文件数据
然后,在Model相应的子目录里实现对应业务数据的原始操作。假设最终的实现文件列表如下:
./Shop/Model/Connector/Recommend.php # 推荐商品./Shop/Model/File/SiteConfig.php # 站点配置./Shop/Model/Goods.php # 商品信息
接着,在ModelProxy层,各自添加相应的缓存策略,如下:
./Shop/ModelProxy/Heavy/Goods.php # 重量级的商品信息./Shop/ModelProxy/Light/SiteConfig.php # 轻量级的站点配置./Shop/ModelProxy/Realtime/Recommend.php # 实时的推荐商品
至此,我们便得到了一个清晰的数据划分。对于每个业务数据,我们都能一种更细粒度上的管理和分布视角。同时对于何种业务数据使用何种缓存策略也一目了解。当然,这里只是作为一个示例,实际项目中,还应实现完善各种缓存策略的基类,以及添加类似下面这样的查询类。
./Shop/ModelProxy/Query/Goods.php # 商品信息查询参数类./Shop/ModelProxy/Query/Recommond.php # 推荐商品查询参数类./Shop/ModelProxy/Query/SiteConfig.php # 站点配置查询参数类
虽然这种方案,可以提供更清晰、更可视化的数据管理,但与此同时也引入了一定的复杂性,建议在大型项目中优先考虑采用,在小型项目中可以先快速迭代再逐渐演进考虑。
在学习了接口请求、接口响应和ADM架构模式后,我们已经掌握了接口服务开发的基本流程。在进入数据库操作和缓存的使用前,我们还要先来学习一下配置的使用。因为后面的数据库和缓存相关配置信息,都需要使用配置来获取。
默认情况下,项目里会有以下三个配置文件:
$ tree ./Config/ ./Config/ ├── app.php ├── dbs.php └── sys.php
其中app.php为项目应用配置;dbs.php为分布式存储的数据库配置;sys.php为不同环境下的系统配置。
在初始化文件,默认已注册配置组件服务。
//$ vim ./Public/init.php// 配置DI()->config = new PhalApi_Config_File(API_ROOT . '/Config');
假设app.php配置文件里有:
return array( 'version' => '1.1.1', 'email' => array( 'address' => 'chanzonghuang@gmail.com', ); );
可以分别这样根据需要获取配置:
// app.php里面的全部配置DI()->config->get('app'); //返回:array( ... ... )// app.php里面的单个配置DI()->config->get('app.version'); //返回:1.1.1// app.php里面的多级配置DI()->config->get('app.email.address'); //返回:'chanzonghuang@gmail.com'其他配置文件的读取类似,你也可以根据需要添加新的配置文件。
可以说,在项目开发中,除了我们的代码、数据和文档外,配置也是一块相当重要的组成部分,而且占据着非常重要的位置。最为明显的是,如果配置一旦出错,就很可能影响到整个系统的运行,并且远比修改再上线发布的代码影响的速度要快。
这里将讨论另外一个同样重要的问题,即:不同环境下不同配置的管理和切换。现在将不同的策略分说如下。
此种策略的主要方法就是在PHP代码中读取php-fpm中的ENV环境配置,再对应到Linux环境下的profile环境变量,即:
PHP代码 --> $_ENV环境配置 --> Linux服务器环境变量/etc/profile
这样的好处莫过于可以支持项目代码的整包发布,而不需要在各个环境(开发环境、测试环境、回归环境、预发布环境、生产环境)来回修改切换配置,同时运维可以更好地保护服务器的账号和密码而不让开发知道。
而这样的不足则是,在对项目进行初次部署时,需要添加以上一系列的配置,而且后期维护也比较复杂麻烦,特别当机器多时。这时可以通过pupple/stacksalt这些运维工具进行自动化管理。但对于开发来说,依然会觉得有点烦锁。
平凉网站建设【平凉网络公司】平凉做网站、平凉微信公众号开发、平凉网站设计、平凉小程序制作
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)