发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 CQRS
1 2 3 4 ... 8 下一页 Go 8

请教板桥大哥及各位高手:J2EE项目的大数量查询及WebLogic的负载平衡问题

                   
2003-02-17 14:28
赞助商链接

J2EE项目的大数量查询及WebLogic的负载平衡问题

在J道潜水很久了,很喜欢这里的研究氛围。由于最近刚刚接手了一个J2EE项目(我们公司第一次应用),在技术上不是很把握,所以今天注册了一个ID,向各位请教一下,恳请帮助、批评、指正。

项目背景:某市户籍管理系统;
技术方案:J2EE;WebLogic 7+Oracle 8.17;客户端采用Web

主要问题:
1、大数据量并发操作(主要针对查询)问题。由于数据库记录为百万级,而且并发客户端为200(600*33%)左右,所以这将是影响系统性能的瓶颈。
2、WebLogic的负载平衡问题。

拟定解决方案:

针对问题1:
A、建立一个ServerFacade(Session Bean),它为多个对象提供统一获取EJB Home和获取对象的接口;
B、降低事物级别为最低;
C、对于查询操作,不采用Entity Bean,而是采用Seesion Bean+DAO的模式;
D、采用模式2的JDBC驱动,对于WebLogic 7采用JDriver与Oracle客户端连接;
E、JSP和servlet尽量和EJB部署在同一台应用服务器中,尽量少用或不用HTTP Session;
F、在WebLogic服务器设置方面,不是很熟悉,但我想这一定与性能的提升息息相关,比如:高速缓存技术、域(field)分组、并发策略以及紧密关联缓存(eager relationship caching)等,还请大家指导。

针对问题2:
我完全没有负载平衡应用的经验,只是知道WebLogic可以实现,但是怎么实现请大家帮忙;另外,应用负载平衡,对于程序的开发阶段有什么要求?我的意思是:这是不是系统开发后期部署阶段的问题?

第一次发言,加之本人水平有限,不知道问题说清楚没有,还恳请大家,尤其是板桥大哥多帮忙。

2003-02-17 14:57

这个问题很有高度,我本人对weblogic不是很熟,请其它兄弟帮忙解答,本人也能从中得到提高 谢谢

2003-02-17 16:17

谢谢板桥大哥这么快就进行了回复。

对于这两个问题,我的当务之急是解决大数据量的性能问题,由于自己没有这方面的开发经验而项目又很紧,所以我把自己能想到的都列举出来了,请大家帮忙判断一下。对于第二个问题,我只是有所担心对开发阶段是否有影响(估计没有),真正到具体实施时,我想自己搞不定的话可以请BEA的工程师帮忙解决。

2003-02-17 18:36

UP一下

2003-02-17 19:59

刚才在开发中遇到一个问题,希望大家注意:

我们的程序中用到了java.sql.Connection中的public PreparedStatement prepareStatement(String s, int i, int j)方法,但是运行后系统报错不支持。查了一下WebLogic 7的文档,发现:Jdriver不完全支持JDBC 2.0规范,包括――

Class or Interface
Unsupported Methods

java.sql.Blob
public long position(Blob blob, long l)

public long position(byte abyte0[], long l)

java.sql.CallableStatement
public Array getArray(int i)

public Date getDate(int i, Calendar calendar)

public Object getObject(int i, Map map)

public Ref getRef(int i)

public Time getTime(int i, Calendar calendar)

public Timestamp getTimestamp(int i, Calendar calendar)

public void registerOutParameter(int i, int j, String s)

java.sql.Clob
public long position(String s, long l)

public long position(java.sql.Clob clob, long l)

java.sql.Connection
public java.sql.Statement createStatement(int i, int j)

public Map getTypeMap()

public CallableStatement prepareCall(String s, int i, int j)

public PreparedStatement prepareStatement(String s, int i, int j)

public void setTypeMap(Map map)

java.sql.DatabaseMetaData
public Connection getConnection()

public ResultSet getUDTs(String s, String s1, String s2, int ai[])

public boolean supportsBatchUpdates()

java.sql.PreparedStatement
public void addBatch()

public ResultSetMetaData getMetaData()

public void setArray(int i, Array array)

public void setNull(int i, int j, String s)

public void setRef(int i, Ref ref)

java.sql.ResultSet
public boolean absolute(int i)

public void afterLast()

public void beforeFirst()

public void cancelRowUpdates()

public void deleteRow()

public boolean first()

public Array getArray(int i)

public Array getArray(String s)

public int getConcurrency()

public int getFetchDirection()

public int getFetchSize()

public Object getObject(int i, Map map)

public Object getObject(String s, Map map)

public Ref getRef(int i)

public Ref getRef(String s)

public int getRow()

public Statement getStatement()

public int getType()

public void insertRow()

java.sql.ResultSet
(continued)
public boolean isAfterLast()

public boolean isBeforeFirst()

public boolean isFirst()

public boolean isLast()

public boolean last()

public void moveToCurrentRow()

public void moveToInsertRow()

public boolean previous()

public void refreshRow()

public boolean relative(int i)

public boolean rowDeleted()

public boolean rowInserted()

public boolean rowUpdated()

public void setFetchDirection(int i)

public void setFetchSize(int i)

public void updateAsciiStream(int i, InputStream inputstream, int j)

public void updateAsciiStream(String s, InputStream inputstream, int i)

public void updateBigDecimal(int i, BigDecimal bigdecimal)

public void updateBigDecimal(String s, BigDecimal bigdecimal)

public void updateBinaryStream(int i, InputStream inputstream, int j)

public void updateBinaryStream(String s, InputStream inputstream, int i)

public void updateBoolean(int i, boolean flag)

public void updateBoolean(String s, boolean flag)

public void updateByte(int i, byte byte0)

public void updateByte(String s, byte byte0)

public void updateBytes(int i, byte abyte0[])

public void updateBytes(String s, byte abyte0[])

java.sql.ResultSet
(continued)
public void updateCharacterStream(int i, Reader reader, int j)

public void updateCharacterStream(String s, Reader reader, int i)

public void updateDate(int i, Date date)

public void updateDate(String s, Date date)

public void updateDouble(int i, double d)

public void updateDouble(String s, double d)

public void updateFloat(int i, float f)

public void updateFloat(String s, float f)

public void updateInt(int i, int j)

public void updateInt(String s, int i)

public void updateLong(int i, long l)

public void updateLong(String s, long l)

public void updateNull(int i)

public void updateNull(String s)

public void updateObject(int i, Object obj)

public void updateObject(int i, Object obj, int j)

public void updateObject(String s, Object obj)

public void updateObject(String s, Object obj, int i)

public void updateRow()

public void updateShort(int i, short word0)

public void updateShort(String s, short word0)

public void updateString(int i, String s)

public void updateString(String s, String s1)

public void updateTime(int i, Time time)

public void updateTime(String s, Time time)

public void updateTimestamp(int i, Timestamp timestamp)

public void updateTimestamp(String s, Timestamp timestamp)

java.sql.ResultSetMetaData
public String getColumnClassName(int i)

看来这是执行效率和编程效率的矛盾,想要更高的执行效率就要牺牲编程的灵活性……唉,本来以为通过JDriver+Oracle客户端(OCI方式)会取得比Oracle Thin Driver更好的效果,但是现在看来似乎又要放弃了(因为我们自己的一套基类无法使用),郁闷啊!!大家有什么好的替代方法吗?

8Go 1 2 3 4 ... 8 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com