后台服务程序框架技术选型方案

1.硬件环境

公司服务器

2.软件环境

2.1 操作系统

CentOS 7 

2.2 反向代理/web服务器

Nginx

2.3 应用服务器

tomcat

2.4 数据库

mysql or  oracle
  • mysql
  • oracle 现在公司系统中都有用到不做过多介绍。

    2.5 缓存

    Redis(Codis) or Memcached
  • Redis 现在公司系统有用到 不做过多解释
  • Memcached 类似Redis的分布式缓存服务、只是没有Redis丰富的数据类型支撑。

建议使用:Redis

推荐理由:公司一直在使用、同事熟练程度高。

2.6 消息队列

MetaQ or kafka

  • MetaQ 淘宝网开源的消息中间件使用java写的类似kafka。
  • kafka Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据

建议使用:kafka

推荐理由:虽然MetaQ我一直在使用并没有问题、但是由于作者基本不更新社区活跃程度低。反而Kafka社区活跃、各大网站有成熟的解决方案、提供可参考的应用实例多。

3.工程构建和管理工具

  1. Maven 开发人员已经很熟悉了。此处略
  2. Jenkins Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
  3. 开发工具 Eclipse

一个简单的持续集成架构图如下: 后台服务程序框架技术选型方案_第1张图片 如上持续集成可以实现开发、测试、生产自动化部署管控。方便调试。

4.前端技术

5.后端技术

  1. Spring MVC
  2. MyBatis
  3. Spring
  4. Dubbox
  5. 模板语言
  6. 配置文件统一管理
  7. 日志组件
  8. JSON库包
  9. DataSource数据源

5.1 Spring MVC

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等。

推荐使用理由:公司项目中一直在使用并且也是时下流行的技术框架。

熟练程度:熟练使用。

5.2 MyBatis

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。 2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)

推荐使用理由:简单易用的配置可以直接通过SQL解决复杂的业务场景。学习成本不算高、替代hibernate。

熟练程度:熟练使用。

5.3. Spring

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说, Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。

推荐使用理由:公司项目中一直在使用并且也是时下流行的技术框架。

熟练程度:熟练

5.4. Dubbox

Dubbo是一个被国内很多互联网公司广泛使用的开源分布式服务框架,即使从国际视野来看应该也是一个非常全面的SOA基础框架。 作为一个重要的技术研究课题,在当当网我们根据自身的需求,为Dubbo实现了一些新的功能,并将其命名为Dubbox(即Dubbo eXtensions)。

推荐使用理由:可以解决系统与系统之间复杂调用、可以实现面向服务SOA编程。简单实现系统服务化发布与治理。

熟练程度:熟练使用dubbo服务发布和服务治理。如果可能可以快速将单一系统重构为分布式服务架构系统。

5.5. 模板语言

  1. freemarker:

    • FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。
       它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
      
  2. Velocity:
    • Velocity是一个基于java的模板引擎(templateengine)。它允许任何人仅仅使用简单的模板语言(template language)来引用由java代码定义的对象。
  3. Beetl:
    • Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。
      而且还易学易用。
      

beetl功能与Freemarker功能比较: http://javamonkey.iteye.com/blog/1573346

velocity freemarker比较: http://lishumingwm163-com.iteye.com/blog/933365

推荐使用理由:FreeMarker在公司系统中已经广泛使用、但是个人深深被beetl简单易用所吸引因此推荐使用。

熟练程度:熟练使用(因为类似FreeMarker、文档丰富、学习成本低)

5.6. 配置文件统一管理

  1. commons-configuration:
    • Commons Configuration是一个java应用程序的配置管理类库。可以从properties或者xml文件中加载软件的配置信息,用来构建支撑软件运 行的基础环境。
        在一些配置文件较多较的复杂的情况下,使用该配置工具比较可以简化配置文件的解析和管理。也提高了开发效率和软件的可维护性。
      
  2. disconf:
    • Distributed Configuration Management Platform(分布式配置管理平台).专注于各种 分布式系统配置管理 的通用组件/通用平台, 提供统一的配置管理服务。

推荐使用理由:如果长期考虑建议使用 disconf 。开发、测试、生产运维实现界面配置、后期扩展性高。如果单独一个子系统使用Commons Configuration足矣。

熟练程度:可以快速搭建disconf服务器并应用到项目中。

5.7. 日志组件

logback 和 slf4j 配合使用

推荐使用理由:公司项目中一直在使用并且也是时下流行的技术框架。

熟练程度:熟练使用。并可以结合logback搭建系统错误邮件报警提醒。

5.8. JSON库包

建议使用 FastJson。参考网址:https://github.com/alibaba/fastjson

推荐使用理由: 零依赖、性能高、强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)。业内广泛使用。

熟练程度:熟练使用

5.9. JDBC连接池、监控组件 Druid

建议使用 druid 为监控而生的数据库连接池。参考网址:https://github.com/alibaba/druid

推荐使用理由:druid为监控而生、DruidDataSource 高效可管理的数据库连接池。替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池

熟练程度:熟练使用。

6.系统数据访问流程

如下图概括系统数据访问流程: 后台服务程序框架技术选型方案_第2张图片

你可能感兴趣的:(服务器)