JavaEE 技术选型建议,server配置,部署策略

Posted zhchoutai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaEE 技术选型建议,server配置,部署策略相关的知识,希望对你有一定的参考价值。

基础设施环境

# 总体採用 centos6.5 + nginx + tomcat7.0 

负载均衡:nginx 配置,使用 nginx 作为负载均衡。权重配置。 在web层做到水平扩展、
        以及配置日志格式,支持db、cache调用次数。响应时间,做全站的监控、
        支持相应參数的配置,方便日后做大数据营销的规划,相应的hive表,做分析使用

web层:採用一主一备。

建议内存16G,cpu 8 core,硬盘其他特殊要求,优化tomcat的jvm參数项。

db层 :数据部署建议採用一主一备。建议内存16G,cpu 8 core,硬盘建议使用固态硬盘,到时系统层配 置做适当的优化。详细部署详见 开发技术建议-数据库

应用开发环境

项目管理工具: maven, git

应用开发技术建议

应用层开发技术
    ①编程语言:java 1.7 

           在淘宝,蘑菇街都经历过一次变革。就是从php往java上架构调整的过程。工作量庞大。 成
        本相当高。到时不但要考虑业务的稳定性。同一时候要考虑到不同语言的分布式调用,业务服务化
        等等各种因素。

在用户服务化项目中,相应的业务接口,在同样配置的机器(64G内存,16corecpu+数据 库一主一备)场景下。qps php和java相差6倍; 分析主要消耗在php框架层,以及php 执行机制上实时解析脚本;java主要考虑在开发成本上,这个能够使用相应的技术来解决。 ②使用框架:springmvc + mybatis + druid + fastjson + google-guava 採用springmvc+mybatis 进行进行业务开发。能够考虑使用我开源项目@刑天盾 进行相关 操作db,业务,controller代码的生成,节省开发成本 ③项目结构採用maven模块化管理,前期依照数据库,业务划分。再往后划分交易、用户、搜索、 消息中心等,模块化,降低功能之间的强耦合性。 ④手机端接口规范化,依照模块+版本号统一的route控制,比如: user/v1,client版本号相应的后 端接口须要依据版本号控制。新版本号相应新的controller,在client统一route。接口传递使用 json对象包装。 其他后台:Bootstrap 等

数据库
    数据库採用 mysql5.5 

    淘宝的70%的业务眼下使用MySQL。蘑菇街97%使用MySQL,是一个相当稳定的DB产品,无论如今
    的支持。还是以后做相关优化。垂直业务。水平分割 。 有问题都能够非常快找到相应的解决方式。

    ①数据库部署採用一主一备,配置数据库 master,slave 节点主从复制,切勿使用MySQL自身的
    方案(有一定的延迟,在高并发情况下)。

②MySQL层的优化。数据类型优化。索引优化。查询优化等 ③程序层须要支持多个数据源额訪问,写的操作所有针对主库master,查询操作作用在slave上。

后期Plan

  以上架构以满足迁移的系统架构方案,在后期,随着业务、并发、用户、存储等 增长、进行相关的架
  构变迁; 总体的目标是技术为伴随业务,成本,等其他因素做相应的技术优化。方案改造;循序渐进。

  ① 图片独立出去,做相应的图片压缩,单独的cdn服务器,考虑到系统的响应,以及client3G环境下
      用户的流量体验,採用webp方案进行压缩优化。

  ② 使用缓存,集中式缓存+本地缓存localcache:

        本地缓存主要中使用 google-guava ,对相关配置项等进行缓存,降低对db的tps

        集中式缓存考虑使用redis2.6版本号,对系统的数据进行缓存,比如 dua用户,等等核心业务的
    数据,缓存部署方案一主一备多实例,程序层要考虑兼容。处理容灾切换等。

③ 使用solr查询,改造查询方案。商品,文章等其他信息 ④ 伴随业务成长db层会有一主多备。业务拆分就是所谓的服务化,以及在往后的水平切分,由于服务 器到dbserver的连接数是一定的。 以及cache层的优化。sharding ,需保证db。cache 容灾 处理。reboot ,shutdown 保证业务正常 datasource 及时refush ⑤ 离线统计,数据化运营 => hadoop 集群计算

以上是关于JavaEE 技术选型建议,server配置,部署策略的主要内容,如果未能解决你的问题,请参考以下文章

技术选型看这里|微服务架构下该如何技术选型?建议收藏

谈 前端 开发 环境的 部署

有效提高ThinkPHP的应用性能的几点建议

云原生 | Docker腾讯云部署Django项目 (服务器选型git配置docker三分钟部署)

JavaEE实战——XML语法和约束技术

SpringCloud01_技术选型搭建父工程支付模块订单模块热部署Devtools(开发阶段)工程重构