Java web合作开发架构介绍
web合作开发
后端–网页的结构设计、路由器、展现—静态天然资源(HTML、CSS、JS)–web伺服器(nginx)– Vue 控制技术栈合作开发
后端–对内提供更多(类)RESTful艺术风格的API—资料库可视化– web应用伺服器(tomcat)– Spring 控制技术栈合作开发
可视化–HTTP协定通讯– JSON文件格式–RESTful 艺术风格
java web合作开发架构的社会变迁
SSH ——Struts、Spring、Hibernate
Spring +SpringMVC + Hibernate/ibatis
SSM —— Spring+SpringMVC+Mybatis—— 非主流
Springboot+Mybatis——蓬勃发展
微服务工程项目架构——springboot+dubbo、springcloud—— 最前沿
后端伺服器的主要就机能
转交外间的API允诺,导出后去继续执行资料库操作方式,最终将统计数据包装袋好回到给分配器(总之,尾端还包涵其它销售业务方法论)
和统计数据操作方式相关的
此类架构通常负责管理和资料库展开相连,负责管理SQL的处置,和将查阅到的统计数据态射成选定的java第一类。
mybatis:初学,SQL全自动撰写,可变性差,全力支持静态SQL,统计数据量大、高并发、表关连维数高、明确要求对资料库移动性好可广度Listary的工程项目,半智能化工作效率快些
hibernate:难学,SQLPCB好,可变性好,不全力支持静态SQL,中小企业变化不多的工程项目,全智能化工作效率慢
和API允诺响应相关的
此类架构通常负责管理根据不同的API允诺来调用程序中不同的处置方法,负责管理将分配器传入的统计数据态射成java第一类,也负责管理处置程序回到给客户端的响应统计数据文件格式等。
struts2: 类级别的拦截,每次发一次允诺都会实例一个action,每个action都会被注入属性。
springmvc: 方法级别的拦截,是单例的,一个方法对应一个request上下文,而方法同时又跟一个url对应,性能好合作开发工作效率高零配置。
和销售业务方法论相关的
此类架构主要就用到了两个特性,以此来简化程序的复杂性:控制反转(IOC)和依赖注入(DI)。在程序中结合此类架构,写出来的程序具有更好的维护性扩展性,也更加清晰简洁。
spring: 非侵入性的方式,以一种完全外部化的方式来对待第一类依赖关系。在 Spring 里,你可以使用 XML、SpringJavaConfig 或者 Groovy-Spring DSL 来相连第一类依赖关系,也可以使用其它的方案。一站式解决方案,能够解决绝大部分架构类问题。
guice:代码将和容器紧密耦合在一起。
常用的架构
统计数据层:mybatis
API层:spring mvc
销售业务层:spring
外加重要的:spring boot——进一步简化基于 spring 架构的工程项目的构建工具
web后端合作开发架构
企业最常用
Spring:是 Java 后端架构家族里面最强大的一个架构,其拥有 IOC(控制反转) 和 AOP(面向切面) 两大利器,大大简化了软件合作开发复杂性。并且,Spring 现在能与所有非主流合作开发架构集成,可谓是一个万能架构,Spring 让 JAVA 合作开发变得更多简单。
SpringMVC:API层,允诺参数态射到对应方法的参数。
SpringBoot:Spring 组件一站式解决方案,简化使用 Spring 架构的难度,简省繁重的配置。
SpringCloud:微服务工程项目架构首选,它利用Spring Boot 的合作开发便利性巧妙地简化了分布式系统基础设施的合作开发,如服务工程项目发现注册、配置中心、消息总线、负载均衡、断路器、统计数据监控等
Mybatis:一种轻量级的第一类关系态射持久层(ORM)架构,统计数据层,资料库相关,相连、处置、态射。
Swagger-UI:前后端协作的利器,导出代码里的注解生成JSON文件,通过Swagger UI生成网页版的接口文档,可以在上面做简单的接口调试 。
ApachePOI:POI提供API给Java程序对Microsoft Office文件格式档案读和写的机能。
关系型资料库
MySQL:中小型资料库
Oracle:大型资料库,大并发,大访问量
NoSQL
Redis:内存中的统计数据结构存储系统,它可以用作资料库、缓存和消息尾端件,配合关系型资料库做高速缓存,一个key-value型的资料库,解决应用伺服器的cpu和内存压力、减少io的读操作方式、减轻io的压力,适用于统计数据高并发的读写、海量数据的读写、对扩展性明确要求高的统计数据等场景。
MongoDB:更类似 MySQL,全力支持字段索引、游标操作方式,其优势在于查阅机能比较强大,擅长查阅 JSON 统计数据,能存储海量统计数据,但是不全力支持事务。
消息尾端件
解决分布式系统之间消息的传递,异步处置(放入消息队列,提高吞吐量)、应用解耦(写入-订阅)、流量削峰(秒数或者团抢活动),大型电子商务类网站消除高并发访问高峰,加快网站的响应速度
ActiveMQ:中小型公司,万级,非常成熟,机能强大,在早些年业内大量的公司和工程项目中都有应用,主要就是基于解耦和异步来用的,较少在大规模吞吐的场景中使用。
RabbitMQ:万级,延时很低,是erlang语言本身带来的问题。很难读源码,很难定制和掌控。
RocketMQ:大型公司,十万级,阿里,接口简单易用,可以做到大规模吞吐,性能也非常好,分布式扩展也很方便,社区维护还可以,可靠性和可用性都是ok的,还可以支撑大规模的topic数量,全力支持复杂MQ销售业务场景。
Kafka:十万级,大统计数据领域的实时计算、日志采集,超高的吞吐量,ms级的延迟,极高的可用性和可靠性,而且分布式可以任意扩展。
SOA(面向服务工程项目)相关
系统集成—有序,系统的服务工程项目化—复用,销售业务的服务工程项目化—高效
SpringCloud.Dubbo:阿里,分布式、高性能、透明化的 RPC 服务工程项目架构,提供更多服务工程项目自动注册、自动发现等高效服务工程项目治理方案。RPC 指的是远程调用协定,也就是说两个伺服器可视化统计数据。透明化的远程方法调用,像调用本地方法一样调用远程方法,配置简单,无API侵入;软负载均衡和容错机制,可在内网替代F5等硬件负载均衡器,降低成本;服务工程项目的自动注册与发现,不需要写死服务工程项目提供更多方的地址,注册中心基于接口名查阅服务工程项目提供更多着的IP地址,并且可以平滑的添加或者删除服务工程项目提供更多者;采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需要Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展展开加载。
Zookeeper: 分布式服务工程项目架构,是Apache Hadoop 的一个子工程项目,它主要就是用来解决分布式应用中经常遇到的一些统计数据管理问题,如:统一命名服务工程项目、状态同步服务工程项目、集群管理、分布式应用配置项的管理等。zookeeper=文件系统+监听通知机制,客户端注册监听它关心的文件目录节点,当目录节点发生变化(统计数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端。
假设我们的程序是分布式部署在多台机器上,如果我们要改变程序的配置文件,需要逐台机器去修改,非常麻烦,现在把这些配置全部放到zookeeper上去,保存到系统中。
搜索相关
全文搜索搜索引擎,计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查阅时,检索程序就根据事先建立的索引展开查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。
Elasticsearch: 一个基于Lucene的搜索伺服器,它提供更多了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。分布式、多租户、某些节点出现故障时会自动分配其它节点代替其展开工作、接近实时的搜索。自身带有分布式协调管理机能、仅全力支持json文件文件格式、在处置实时搜索应用时工作效率明显高于Solr、适用于新兴的实时搜索应用。
Solr: 基于Lucene的全文搜索伺服器。同时对其展开了扩展,提供更多了比Lucene更为丰富的查阅语言,同时实现了可配置、可扩展并对查阅性能展开了优化,并且提供更多了一个完善的机能管理界面。成熟、稳定;不考虑建索引的同时展开搜索,速度更快;建立索引时,搜索工作效率下降,实时索引搜索工作效率不高。用 Zookeeper 展开分布式管理、全力支持更多文件格式的统计数据、传统的搜索应用中表现好于 Elasticsearch、传统搜索应用的有力解决方案。互联网巨头,如Netflix,eBay,Instagram和亚马逊(CloudSearch)都使用Solr,因为它能够索引和搜索多个站点。
Lucene:一个全文检索引擎的架构,提供更多了完整的查阅引擎和索引引擎,部分文本分析引擎。一个Java全文搜索引擎,完全用Java撰写。Lucene不是一个完整的应用程序,而是一个代码库和API,可以很容易地用于向应用程序添加搜索机能。
通讯相关
Netty: 异步高性能的通讯架构,往往作为基础通讯组件被 RPC 架构使用。典型的应用有:阿里分布式服务工程项目架构 Dubbo 的 RPC 架构使用 Dubbo 协定展开节点间通讯,Dubbo 协定默认使用 Netty 作为基础通讯组件,用于实现各进程节点之间的内部通讯。淘宝的消息尾端件 RocketMQ 的消息生产者和消息消费者之间,也采用 Netty 展开高性能、异步通讯。大数据领域,经典的 Hadoop 的高性能通讯和序列化组件 Avro 的 RPC 架构,默认采用 Netty 展开跨节点通讯,它的 Netty Service 基于 Netty 架构二次PCB实现。
文件存储
FastDFS: 一个轻量级分布式文件系统,对文件展开管理,机能包括:文件存储、文件同步、文件访问(文件上传、文件下载)。
工程项目构建类
1Maven:主要就机能主要就分为5点,分别是依赖管理系统、多模块构建、一致的工程项目结构、一致的构建模型和插件机制。
2Gradle:构建包括编译主代码、处置天然资源、编译测试代码、继续执行测试、上传归档等,基于灵活的任务模型,因此很多事情包括覆盖现有任务,跳过任务都非常易于实现。
Gradle作为一款基于Groovy语言的构建工具,已经吸引众多的ant,maven使用者转投gradle的怀抱,和Gradle相比,ant显得冗余复杂,maven显得有些死板落后,而gradle基于DSL语法,特点明显:简洁、灵活、可读性强。Gradle和maven有很多相似点,gradle充分考虑到maven库的价值,在jar包管理上完全全力支持mavenRepository,很多属性乍眼一看就能反应过来maven中对应的是什么标签,大大降低maven到gradle的迁移难度,并在构建方面改善了很多maven的不足,,同时,gradle对比maven更好的面向ant用户,使用maven时,虽然能通过plugin来跑ant的命令,但是maven在任务实现主要就靠的是插件和自身的固定架构,Gradle在定义任务方面思想与ant非常相似,做了很好的集成。
IDE
IntellijIDEA: 更好的调试、更高的合作开发工作效率、更智能化的重构、目录分层少而清。
Ecplise: 最大化控制台、工程项目结构全力支持更强大、插件撰写更容易、免费。
我会给大家分享我收集整理的各种学习资料,组织大家一起做工程项目练习,帮助大家匹配一位学习伙伴互相监督学习,欢迎加入。
作者:lorogy
链接:Java后端合作开发架构