如何搭建一个实用稳定的架构
项目一开始就要规划到底项目能发展到多大,考虑项目的结构。
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 用了就喜欢上它妙不可言。
以上就只是基本的框架及说明,想要更深入的了解还得好好的学习