如何搭建一个实用稳定的架构

 

项目一开始就要规划到底项目能发展到多大,考虑项目的结构。

1,外包项目

这两主要是说几点

一般的外包项目可以不用maven工程,直接搭建web项目,这样做打包方便,便于交付,一般的架构都是mybatis+spring+springMVC,这样的项目基本上逻辑性不是很强,基本上就是增删改查,很多代码都可以直接生成比较方面。一般的web项目只要有tomcat就可以直接运行,如果要用云服务建议直接用阿里云,这样的项目一般要求配置比较低。但是要求稳定,直接映射Ip就能外网访问。

2,一般的产品,数据量不是很大,并发量不是很高的。

  是产品一般要求比较高特别是文档和日志管理方面,产品大多数都是要考虑到后期的维护,已经效率,要求就是代码逻辑清晰,服务稳定。

 这样的项目一般会弄两个服务器,在升级的时候保证服务不断有连续性,两个服务器还能解决一些并发的问,一般弄两个服务器这里就会涉及到缓存,现目前的的缓存一般都是用redis,实用于N多服务器共同存储中间数据。Redis  是基于内存运行速度非常快。

 

产品项目 

这里在说说框架,一般是产品都规划的比较好

这里说说是否用三大框架和JDBC的好处。

1,  用框架一开始会节省很多的开发时间,但是要写一些特定的东西的时候框架已经被限制死了,比如说后期需要和其他不是这个框架的项目做集成的时候,中间引包会产生很多麻烦的事情,还有就是别人也是用三大框架,在集成项目的时候会有很多配置需要更改。之前遇到过就是一个是三大框架在引包的时候,需要重新扫描Bean配置,要配置几套。所以说不是很方变。

2,            用JDBC 什么都能自己控制,别的项目引入,引入别的项目的时候就不会存在这些问题。但是开发效率比较慢,要弄一大堆基础的东西。

 

一般来说前期都是用框架,因为东西可以很快出来,后期重构项目考虑性能方面的问题,后期在不太忙的时候,公司会有大量的人力来重构,因为项目越往后,很多都是偏向的是维护,开发任务不是很重的时候可以考虑。这个一般都比交适合新的公司。

 

超级项目

 一般这样的项目,最大的考虑就是可维护性,因为这样的项目涉及的人员比较多,所以一开始就需要制定好规范,文档方面的东西。不管人员的流动,新人都能很快入手项目。一般这样的项目都建议用比较通用且效率比较高的框架。

  除开这些基本上就和上面的一样,超级项目可以细分成N多小的项目,这里可以说说springBoot也就是SpringCloud,项目与项目之间可以相互调用(采用通信的方式),这样的项目维护成本比较高,但是是不可避免的,让调理更加清晰。每个项目都围绕着一个大的项目转。

 

下面来说说运用框架及第三方的问题

 

项目基本框架 mybatis+spring+springMVC

 

                   mybatis+spring+springboot + Eureka(服务治理)

 

日志框架    ELK  Elasticsearch 搜索, Logstash 收集分析过滤日志, Kibana 图形工具页面WEB

这里就不详细的赘述了(感觉比较好用,支持分布式,大数据日志)

 

缓存框架     redis 或者memcache

个人更偏向于redis(它支持多种数据类型极限压力也比memcache大,支持数据持久化,有很多数据库的特性支持数据备份)

 

搜索框架   Elasticsearch 或者solr  两种都是基于lucene,这里只是知道Elasticsearch搜索效率更高。

 

自动打包发布 svn 代码管理– jenkins 自动打包测试编译发布 – docker 容器

 

反向代理服务器(可以做负载均衡)nginx  7*24 不间断

 

数据库  mysql(免费) oracle(函数功能强大)  sql server

 

数据库分库分表 这里主要说说Mycat  阿里也有个类似的东西但是没有用过

Mycat 主要是解决数据量过大的问题,数据库,读写分离 ,分库,分表,路由节点设置

 

这些东西基本上就能解决高并发,数据响应慢的问题。   

最后一个就是 文档工具  showDoc  用了就喜欢上它妙不可言。

以上就只是基本的框架及说明,想要更深入的了解还得好好的学习