文档章节

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

zzuqiang
 zzuqiang
发布于 2016/08/26 10:32
字数 1782
阅读 1559
收藏 10

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

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

一个简单的持续集成架构图如下: 输入图片说明 如上持续集成可以实现开发、测试、生产自动化部署管控。方便调试。

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.系统数据访问流程

如下图概括系统数据访问流程: 输入图片说明

© 著作权归作者所有

zzuqiang
粉丝 25
博文 61
码字总数 133582
作品 0
郑州
程序员
私信 提问
(一)构建dubbo分布式平台-平台导语简介

导语: 怎么搭建一套满足企业未来发展的通用架构平台?现在分布式、微服务、云平台的口号是如此的响亮,技术更新是如此的迅速,很多架构师选择使用dubbo、spring cloud的方案去帮助企业搭建分...

park
2017/11/27
0
0
基于 Java 的轻量级 CMS 解决方案--天梯

天梯(tianti) Java 轻量级的 CMS 解决方案-天梯。天梯是一个用 Java 相关技术搭建的后台 CMS 解决方案,用户可以结合自身业务进行相应扩展,同时提供了针对 dao、service 等的代码生成工具...

jianfangxu
2017/02/08
58.2K
52
我们 Pikacode 公司的技术选型

“及早发布。频繁发布。听取客户的意见”(Eric S. Raymond, The Cathedral and the Bazaar)是我们Pikacode公司的主导方针。开发中的技术选型必须认真的遵循这个指导原则。 Python 快速且整洁...

oschina
2012/11/14
2.8K
20
前端开发之路--启航篇

开始之前 2017年结束还有一个月;总想学点前端的知识;甚至学习前端框架思想。这里将会开启一个前端的学习摘要和笔记记录。 前端工程——基础篇 从本质上讲,所有Web应用都是一种运行在网页浏...

weir_will
2017/12/03
0
0
最前沿的容器技术有哪些?腾讯、华为、思科等 6 位顶尖专家为你解答!

点击上方“CSDN”,选择“置顶公众号” 关键时刻,第一时间送达! 容器革命已经来临,随着 Docker 拥抱 Kubernetes,容器领域风云变幻,Kubernetes 逐步走强,以 Docker 为代表的容器技术在国...

csdnnews
2017/12/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx访问日志/日志切割/静态文件过期时间/防盗链

Nginx访问日志主要记录部署在nginx上的网站访问数据,日志格式定义在nginx主配置文件中。 nginx主配置文件:/etc/nginx/nginx.conf 查看nginx主配置文件: ```markup [root@linux ~]# cat /e...

asnfuy
2分钟前
0
0
JS_高程4.变量,作用域和内存问题(2)执行环境及作用域

本文转载于:专业的前端网站➨JS_高程4.变量,作用域和内存问题(2)执行环境及作用域 1.执行环境:执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为,       每个执...

前端老手
6分钟前
2
0
手机迅雷下载的文件,电脑上找不到问题

不知道手机迅雷怎么做到的,手机迅雷下载的文件,手机上可以看的到 但连电脑后, 电脑上看不到文件 . 尝试了打开查看隐藏文件, 但没有效果 . 手机上查询文件权限 也是对的 . 可读,可写, 不隐藏 ...

ol_O_O_lo
7分钟前
2
0
python学习11:Python tuple元组详解

元组是 Python 中另一个重要的序列结构,和列表类似,也是由一系列按特定顺序排序的元素组成。和列表不同的是,列表可以任意操作元素,是可变序列;而元组是不可变序列,即元组中的元素不可以...

太空堡垒185
20分钟前
3
0
Java实现数据结构之线性结构

一、顺序表 顺序表本质是使用数组储存数组的一种数据结构,在计算机的储存中是连续的分配内存的。 下面是我自己使用java实现的简单顺序表结构 package list; public class MyArrayList<E> { ...

daxiongdi
22分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部