我们主要是web应用,web规模也不能确定,有可能一天几千万甚至上亿的PV,也有可能根本没人用。最初设计guzz的目的就是让大型网站和小型网站一样设计编写,因为谁也不知道这个应用上去以后有多少人用,同时解决系统被要求页面天天改来该去的问题。
使用guzz以来的效果:
1. 框架性能上没有看得出的快慢区别。我觉得不会比hibernate和biatis慢,我看过他们的一些代码,流程挺复杂的。guzz很简单,整个持久化过程需要转手的类至少要比这两个少很多。
2. 以前我们用hibernate较多,一般数据库设计就是一个库,读写全部做。现在在设计时大家脑子里面直接就是分出3个数据库(可能部署在1台mysql上)--业务主库,临时信息库,日志库,然后把表分到不同的库中。然后数据库安装时直接主从安装,主从使用。虽然看起来库复杂了,但程序上没有任何成本代价,基本上已经形成一种设计流程。这种模式感觉可以作为最佳实践。
3. 编程上,一开始开发人员还是建个spring action类 + 在dao和manager中增加需要的方法 + 修改dispatcher-servlet.xml配置映射 + jsp实现view。但现在很多功能都是直接jsp,用taglib直接读库,基本上后台的读数据库操作页面已经看不到action的影子了。java代码比先前的工程,同样的功能少了大概60%-70%。
4. 我们的系统一般后台功能比较复杂,以往编辑要改点东西大家都很郁闷。不过现在抵制少了很多,基本上就是改改jsp或者在复制1个新的jsp改改,然后传到服务器上,一大堆集群机器的重启工作都免了,无论是开发还是部署都很省事。和php差不多。
guzz1.2.7分表和自定义表的应用实例:
我们有1套调查系统,使用了这项技术,也是第一个线上测试。每个调查都不太一样,需要网友填一些东西,需要填什么,填的个数类型都不定。一个调查进行过程中,或者结束后要求对数据进行统计报表。统计的内容可能也包括那些自定义的填空题。
在1.2.7之前,我们解决方案是:将所有自定义的调查项,按照key-value生成一个xml字符串,存储到数据库大字段中(Mysql text字段)。需要统计时,根据mysql5.1对xml支持的新特性使用ExtraValue函数解析这个xml生成一个新表(create table xxxx select ExtraValue(xx) as a, .....from 主调查记录表),然后在根据新的xxxx表统计。每次都要手工来弄,非常繁琐。
1.2.7,使用切表和自定义属性后,现在的解决方案:每次创建投票并建立好自定义调查项(自定义调查项存储在数据库中),根据这些自动生成一个mysql create table的语句,创建好需要的表。在配置CustomTableView动态的映射用户提交的数据存储到对应的表中。完全自动,后续处理简化了很多。
而且由于整个过程是实时的,以前的过程是手工的,所以很多线上的报表功能也可以开发了。开发也非常简单,我们用guzz jsp tablib直接读库,像操作普通java属性一样操作自定义属性,一个类型的表报1个jsp。特殊调查的特殊报表也就是往服务器上放1个特殊处理的jsp,应用都不用重启,非常方便。
guzz1.2.7分表和自定义表的下一个应用计划:
这是一个计划,还没有做,不过我们准备很快就开始做。
我们的所有系统对日志都有要求,日志必须记录!但日志的开发很烦人,全是没有技术含量的重复工作。我们准备开发一个日志服务,所有系统以后就不用开发日志了,直接使用这个服务。日志服务分为服务器端和客户端。
服务器端:
一个标准的java web系统,有日志数据库,用来存储所有系统的日志信息,并提供查询和统计等界面。如果有人需要查日志,就到这个系统来查。
服务器端有1个应用数据库,用来创建和管理授权的应用系统。1个新的应用上线的时候,在这里创建一个应用和他的授权码,然后录入他的个性日志字段和数据类型(类似上面提到调查的个性选项),服务器自动在数据库中给他创建1个日志表,用来存储这个应用的日志数据。我们准备按季度分表,让每个日志表1个季度分成1张子表。
客户端:
实现一个标准的guzz service,提供日志插入接口
public void log(UserLog log) ;
每个系统开发时,将日志服务的jar包放到工程中,并在guzz.xml中声明此服务,代码直接调用就OK了。
这样以后就不用为每个系统开发日志管理模块了。并且还能获取到统计某一个用户在所有系统中活动记录的额外增强(例如我们可以在服务器端将日志记录两份,一份按应用系统,一份按操做者记录)~~
.
分享到:
相关推荐
guzz的jar包,工程下直接考过来的,可以直接使用
通过分析和运行这个项目,我们可以深入理解Guzz的核心概念和使用方法。 首先,Guzz的设计目标是提供一种灵活、高效的解决方案,用于处理实时或批处理的数据流任务。它采用了面向任务编程模型,使得开发者可以专注于...
guzz是一套用来进行快速开发和高性能网站设计的java框架,通过ORM、多数据源数据管理、以及通用数据处理,为系统在数据层的设计提供一站式解决方案。用于替代或者补充hibernate或ibatis,并提供更多的大型系统架构...
【Guzz-crx插件】是一款专为Guzz平台设计的屏幕共享扩展程序,它使得用户能够在使用Guzz.io服务时轻松实现桌面屏幕共享功能。这一功能对于远程协作、在线会议、教育辅导以及团队沟通等场景具有极大的价值,极大地...
为Guzz启用屏幕共享。 此扩展程序允许www.guzz.io用户共享桌面屏幕 支持语言:English
NULL 博文链接:https://guzz.iteye.com/blog/256235
常见的持久层框架有Hibernate、MyBatis、TopLink、Guzz、jOOQ、Spring Data和ActiveJDBC等,它们都为开发者提供了便捷的数据持久化解决方案。 在Hibernate中,Session提供了多种操作数据库的方法,如load()和get()...
为了深入了解,你可以访问提供的博文链接(https://guzz.iteye.com/blog/507276),在那里可能会找到关于BICQ的详细解释、使用示例和开发背景等信息。同时,查看压缩包中的文件(BICQ)可以获取实际的源代码,进一步...
MultiSafepay PHP SDK关于...如果您没有安装任何客户端实现,请使用以下命令: composer require guzzlehttp/guzzle如果您没有安装任何工厂实现,请使用以下命令: composer require http-interop/http-factory-guzz
根据给定文件的信息,我们可以提炼出与“哀悼日变灰操作”相关的IT知识点,但首先需要澄清的是,文件内容似乎包含了一些不相关的代码片段和文档,这些内容涉及一个名为"Guzz"的全栈数据层解决方案框架,以及一系列与...
总结起来,Bof: 是用户友好的避免使用魔术字符串和数组进行配置:相反,它提供可由IDE自动完成的显式,类型化和文档化方法带有默认值:默认支持JSON,4xx和5xx响应抛出异常,默认情况下超时时间短符合PSR-7 未来的...
常见的Java持久层框架有Hibernate、MyBatis、TopLink、Guzz、jOOQ、Spring Data和ActiveJDBC等,它们都提供了方便的数据操作和数据库访问功能。 在Hibernate中,SessionFactory是一个关键组件,它是线程安全的,...
目前市面上有多个持久层框架,如Hibernate、MyBatis、TopLink、Guzz、jOOQ、Spring Data和ActiveJDBC等,它们各有特点,为开发者提供不同场景下的解决方案。 在Hibernate框架中,SessionFactory是一个重要的概念,...
NULL 博文链接:https://guzz.iteye.com/blog/883225
持久层框架则是实现数据持久化操作的一系列框架,常见的有Hibernate、MyBatis、TopLink、Guzz-jOOQ、SpringData和ActiveJDBC等。 3. Hibernate持久层框架:Hibernate是一个开源的ORM框架,它提供了一个完整的解决...
为了避免频繁地创建和销毁Session对象,可以使用ThreadLocal将Session与当前线程绑定,确保每个线程都拥有自己的Session实例。 #### 四、Hibernate中Session的load和get方法 **1. load与get的区别** - **load**...
SessionFactory和Session是Hibernate中非常重要的两个概念,它们的安全性和使用方式直接影响到应用程序的性能和稳定性。 **详细解释:** - **SessionFactory**: - **线程安全性**:SessionFactory是线程安全的,...