系统架构调整(一) Druid整改

原配置结构为spring+maven profile整合,现在整改也在此基础上做调整

1. 项目pom.xml ,增加druid依赖

<!-- alibaba -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>0.2.23</version>
        </dependency>

2. 在config资源文件夹下新增不同环境的jdbc配置文件,这里举例为jdbc-develop.properties,jdbc-test.properties,jdbc-product.properties,每个文件内容均为如下

## JDBC set
jdbc.url=jdbc:oracle:thin:@192.168.xx.x:1521:oracle
jdbc.username=pjm
jdbc.password=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+Zu1xI4coeWXqOJYBCwxqoHnmc+D9Lhoku5lSphi3ZvOJ0tJ6rzzA==

这里采用密码加密,解决机制在3中配置,加密方法如下:

cmd命令:
?、进入druid-0.2.23.jar包所在目录(这里用的druid为0.2.23版本)
?、在命令行中执行如下命令:
java -cp druid-0.2.23.jar com.alibaba.druid.filter.config.ConfigTools pwd 输出加密结果

3. 项目中新增druid-profile.xml,注意红字标出,配置数据库连接、配置文件、最后跟上profiles定;filters(stat)为性能监控

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation=" 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"
    default-lazy-init="true">

<description>各环境数据库配置 </description>

<beans profile="develop">
        <context:property-placeholder location="classpath*:jdbc-develop.properties" />
        <!-- 基于Druid数据库链接池的数据源配置 -->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
            init-method="init" destroy-method="close">
            <!-- 基本属性driverClassName、 url、user、password -->
            <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
            <!-- 配置初始化大小、最小、最大 -->
            <!-- 通常来说,只需要修改initialSize、minIdle、maxActive -->
            <property name="initialSize" value="2" />
            <property name="minIdle" value="2" />
            <property name="maxActive" value="30" />
            <property name="testWhileIdle" value="true" />

<!-- 配置获取连接等待超时的时间 -->
            <property name="maxWait" value="5000" />
            <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
            <property name="minEvictableIdleTimeMillis" value="30000" />
            <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
            <property name="timeBetweenEvictionRunsMillis" value="60000" />
            <!-- 解密密码必须要配置的项/性能监控 -->
            <property name="filters" value="config,stat" />
            <property name="connectionProperties" value="config.decrypt=true" />
        </bean>
    </beans>
    <beans profile="product">
        <context:property-placeholder location="classpath*:jdbc-production.properties" />
        …

<!-- 同上设置 -->
    </beans>
    <beans profile="test">
        <context:property-placeholder location="classpath*:jdbc-test.properties" />
        …

<!-- 同上设置 -->
        </bean>
    </beans>
    <beans profile="develop,test,product"></beans>
</beans>

或者以下格式

<description>各环境数据库配置 </description>

<beans profile="develop">
        <context:property-placeholder location="classpath*:jdbc-develop.properties" />
    </beans>
    <beans profile="product">
        <context:property-placeholder location="classpath*:jdbc-product.properties" />
    </beans>
    <beans profile="test">
        <context:property-placeholder location="classpath*:jdbc-test.properties" />
    </beans>
    <beans profile="develop,test,product">
    <!-- 基于Druid数据库链接池的数据源配置 -->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
            init-method="init" destroy-method="close">
            <!-- 基本属性driverClassName、 url、user、password -->
            <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
            <!-- 配置初始化大小、最小、最大 -->
            <!-- 通常来说,只需要修改initialSize、minIdle、maxActive -->
            <property name="initialSize" value="2" />
            <property name="minIdle" value="2" />
            <property name="maxActive" value="30" />
            <property name="testWhileIdle" value="true" />

<!-- 配置获取连接等待超时的时间 -->
            <property name="maxWait" value="5000" />
            <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
            <property name="minEvictableIdleTimeMillis" value="30000" />
            <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
            <property name="timeBetweenEvictionRunsMillis" value="60000" />
            <!-- 解密密码必须要配置的项/性能监控 -->
            <property name="filters" value="config,stat" />
            <property name="connectionProperties" value="config.decrypt=true" />
        </bean>
    </beans>

4. 删除原database.xml配置

5. 项目web.xml中添加红字信息

<!-- 加载配置文件 -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring/*.xml</param-value>
</context-param>

<!-- 定义环境参数 -->
<context-param>
    <param-name>spring.profiles.active</param-name>
    <param-value>develop</param-value>
</context-param>

<!-- 定义druid监控 start -->
<servlet>
    <servlet-name>DruidStatView</servlet-name>
    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>DruidStatView</servlet-name>
    <url-pattern>/druid/*</url-pattern>
</servlet-mapping>
<!-- 定义druid监控 end –>

好了,搞定~查看监控地址为:http://localhost:8080/project/druid/sql.html

时间: 2024-10-06 11:25:26

系统架构调整(一) Druid整改的相关文章

SOA系统架构

一.SOA原理与应用 1.SOA原理 SOA(Service-oriented architecture,面向服务架构). SOA的价值在于跨越了不同应用系统.不同技术的整合,这种整合改变现有的商业模型. SOA是在计算环境下设计.开发.应用.管理分散的逻辑(服务)单元的一种规范.这个定义决定了SOA的广泛性.SOA要求开发者从服务集成的角度来设计应用软件,即使这么做的利益不会马上显现.SOA要求开发者超越应用软件来思考,并考虑复用现有的服务,或者检查如何让服务被重复利用.SOA鼓励使用可替代的

Hbase系统架构

HBase 系统架构 HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase是一个开源的,分布式的,多版本的,面向列的存储模型.它存储的是松散型数据. HBase特性: 1 高可靠性 2 高效性 3 面向列 4 可伸缩 5 可在廉价PC Server搭建大规模结构化存储集群 HBase是Google BigTable的开源实现,其相互对应如下: Google HBase文件存储系统  GFS  HDFS海量数据处

微信系统架构

微信的成功归结于腾讯式的"三位一体"策略:即产品精准.项目敏捷.技术支撑.微信的成功是在三个方面的结合比较好,能够超出绝大多数同行或对手,使得微信走到比较前的位置.所谓产品精准,通俗的讲就是在恰当的时机做了恰当的事,推出了重量级功能,在合适的时间以最符合大家需求的方式推出去.他认为在整个微信的成功中,产品精准占了很大一部分权重. 敏捷是一种态度 敏捷就是试错 微信研发团队里鼓励一种试错的信仰:他们坚信,在互联网开发里,如果能够有一个团队在更短的时间内尝试了更多机会(并能改进过来),就能

HBase 系统架构

HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase是一个开源的,分布式的,多版本的,面向列的存储模型.它存储的是松散型数据. HBase特性: 1 高可靠性 2 高效性 3 面向列 4 可伸缩 5 可在廉价PC Server搭建大规模结构化存储集群 HBase是Google BigTable的开源实现,其相互对应如下:   Google HBase 文件存储系统 GFS HDFS 海量数据处理 MapRedu

谈谈对于企业级系统架构的理解

在我们刚开始学习架构的时候,首先会想到分层的概念,分层架构比较经典的是三层架构,那么,什么是三层架构呢?它包括表现层,业务层,数据访问层:而对于一个新手来说,从抽象意义上的三层架构,逻辑上就划分为三个层. 这个是最基本的三层架构模式. 表现层充当系统的界面呈现以及UI逻辑的角色,也就是说,UI(用户界面)属于表现层: 举一个对于asp.net WebForm来说,人们喜欢把对于UI的控制逻辑(服务器控件的读取.设置.事件等等)写在页面的后置隐藏代码中,并且依赖业务逻辑层.当然,服务器控件支持数据

NET ERP系统架构设计

解析大型.NET ERP系统架构设计 Framework+ Application 设计模式 我对大型系统的理解,从数量上面来讲,源代码超过百万行以上,系统有超过300个以上的功能,从质量上来讲系统应该具备良好的可扩展性和可维护性,系统中的功能紧密关联.除去业务上的复杂性,如何设计这样的一个协作良好的系统,搭建开发人员基础平台,一直是我研究的方向. SouceCounter(版本3.3.91.79)对源代码的统计信息如下: 下面来详细解析一下这个系统的设计架构,纯.NET技术架构方案,C/S W

谈谈对于企业级系统架构的理解(转)

原文地址:http://www.cnblogs.com/liping13599168/archive/2011/05/11/2043127.html 在我们刚开始学习架构的时候,首先会想到分层的概念,分层架构比较经典的是三层架构,那么,什么是三层架构呢?它包括表现层,业务层,数据访问层:而对于一个新手来说,从抽象意义上的三层架构,逻辑上就划分为三个层. 这个是最基本的三层架构模式. 表现层充当系统的界面呈现以及UI逻辑的角色,也就是说,UI(用户界面)属于表现层: 举一个对于asp.net We

新闻APP后端系统架构成长之路

前言:一年来从接受APP后端工作到现在可谓一路艰辛,中间踏过无数坑坑洼洼,也从中学到很多很多,之前领导也多次提醒,平时多总结.把经验形成系统,但平时大部分时间一直在忙于开发.处理问题,天天马不停蹄的往前走.眼看着春节将至,16年又过去了,业务有了很大发展,我们系统也愈加完善.之前一直也没有时间静下心来后头看看,眼下随着6.0版本开发上线完毕,稍得片刻喘息,自己也想想,也是时候回头看看.总结一下了. 1,初入圣地 2,筑基:完全重构 3,金丹:踩坑..而且是踩大坑 4,元婴:面临挑战,流量来袭 5

.Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整-控制反转和依赖注入的使用

再次调整项目架构是因为和群友dezhou的一次聊天,我原来的想法是项目尽量做简单点别搞太复杂了,仅使用了DbContext的注入,其他的也没有写接口耦合度很高.和dezhou聊过之后我仔细考虑了一下,还是解耦吧,本来按照软件设计模式就应该是高内聚低耦合的,低耦合使项目的模块独立于其他模块,增加了可维护性和移植性! 注:前面写的博客详细记录没项目操作的每一步,其实写起博客来很费时间,而且整片博文里很多无用的信息.对MVC来说会添加控制器,添加视图,添加类这些都最基本的要求了,并且前面博文里都写了,