
发表日期: 2021-04-26 09:50:28 浏览次数:110
启东网站制作【启东网站优化】启东建网站、启东微信公众号运营、启东网页设计、启东微信小程序商城
启东市,江苏省直辖,南通市代管,位于江苏省东南端,长江入海口北岸,是江苏省日出最早的地方。 [1] 户籍总人口110.35万,常住人口94.95万(2019年)。 [2] 截至2020年6月,启东市下辖9个镇。 [3]
后周显德五年(958年),置海门县于东布洲,隶于通州,海门县域包括今启东中部、北部地区。民国十七年(1928年),于崇明外沙设启东县。1989年,撤销启东县,设立县级启东市。 [14] [56]
启东是全国对外开放口岸 [4] 、中国建筑之乡 [5] 、国家卫生城市 [6] 、国家园林城市 [7] 、全国文明城市 [8] 、国家级生态示范区 [9] 、节水型社会建设达标县 [10] 、紧密型县域医共体建设试点县 [11] 、革命文物保护利用片区分县 [12] ,海洋经济之乡、电动工具之乡、建筑之乡、教育之乡、版画之乡。 [1]
2019年,启东市地区生产总值1157.55亿元,第一产业增加值79.64亿元,第二产业增加值581.29亿元,第三产业增加值496.62亿元。三次产业比为6.9:50.2:42.9。人均地区生产总值121879元。
如果真的这样,相信我们也就慢慢能体会到精益开发的乐趣。
至于调用关系,整体上讲,应根据从Api接口层、Domain领域层再到Model数据源层的顺序进行开发。
在开发过程中,需要注意不能越层调用也不能逆向调用,即不能Api调用Model。而应该是上层调用下层,或者同层级调用,也就是说,我们应该:
Api层调用Domain层
Domain层调用Domain层
Domain层调用Model层
Model层调用Model层
如果用一张图来表示,则是:

图2-6 ADM调用关系
为了更明确调用的关系,以下调用是错误的:
错误的做法1:Api层直接调用Model层
错误的做法2: Domain层调用Api层,也不应用将Api层对象传递给Domain层
错误的做法3: Model层调用Domain层
这样的约定,便于我们形成统一的开发规范,降低学习维护成本。比如需要添加缓存,我们知道应该定位到Model层数据源进行扩展;若发现业务规则处理不当,则应该进入Domain层探其究竟;如果需要对接口的参数进行调整,即使是新手也知道应该找到对应的Api文件进行改动。
经历了一定岁月的项目系统,往往会变得臃肿、庞大、混乱。这是因为里面需要处理各种数据,而这些数据的来源更为多种多样,如来自文件、来自数据库、来自高效缓存、来自第三方平台接口。虽然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 # 实时的推荐商品复制代码
至此,我们便得到了一个清晰的数据划分。对于每个业务数据,我们都能一种更细粒度上的管理和分布视角。同时对于何种业务数据使用何种缓存策略也一目了解。当然,这里只是作为一个示例,实际项目中,还应实现完善各种缓存策略的基类,以及添加类似下面这样的查询类。

服务热线
顶部
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: http://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878