http://www.jdon.com/artichect/scalable.htm
所谓可伸缩性,是指在小型规模单台服务器情况下,应用系统可以良好运转,系统的访问量或功能增加后,整个系统只需通过增加服务器硬件就可以实现性能扩展,无需修改太多软件。对于可伸缩性平台(如JBoss)来说,理论上,没有最大负载或最多在线人数这样的概念。
重/轻量其实是使用难易程度,从根本上说,重/轻量应该和可伸缩性不矛盾的,特别是EJB 3.0推出以后,这个问题应该得到比较好的解决。
但是,在目前情况下,编写一个JavaBeans要比编写一个EJB容易多,那么,是重/轻量还是可伸缩性应该成为系统架构的主要依据呢? 在这个问题背后,还隐藏了目前在开源领域两个架构技术选择:
1. 重量:基于JBoss/EJB的完整J2EE系统架构 (具有可伸缩性,目前不易于学习)
2. 轻量:基于Tomcat的Struts+Hibernate/Spring+Hibernate (目前无太大可伸缩性,但是易于学习使用)
因为轻量解决方案易于学习新技术,容易使用,选中率比较高。但是让人产生对系统的可伸缩性担忧。鉴于这种情况,我认为有必要强调一下可伸缩性的重要性,切不能因为要跟进新的设计思想和技术,而盲目地采用一个无可伸缩性的设计方案。
其实,"轻量"应该是一个中性词,但是因为大量新的设计思想比较容易通过轻量方案获得成型软件,如(Spring/Naning/Hibernate)等,逐渐的"轻量"好像变成了一个褒义词。如果从可伸缩性的标准看,轻量还可能是一个贬义词,轻量意味着丧失重量系统中的分布式网络计算的设计考量,那么可伸缩性就要打问号。
从这次JavaOne大会以及从长远来看,随着EJB 3.0中间件轻量化、SOA架构理念普及,轻量/重量的区别已经模糊,如果还是以轻量/重量作为架构选择的标准,甚至标榜自己的系统,无疑是不明智的。
可伸缩性应该依然是实用企业系统架构的主选,可伸缩性是站在软件公司的客户企业立场,为这些客户企业考虑的,但是他们经常因为被认为是外行,挡在了软件系统架构选择的门外。
分享到:
相关推荐
这种架构风格提高了系统的可伸缩性和容错性。 此外,面向方面编程(AOP)和事件驱动架构(EDA)也是软件架构中的重要技术。AOP允许开发者将关注点分离,比如日志、事务管理等,使得代码更专注于业务逻辑。EDA则利用...
轻量级J2EE应用则是在保留了J2EE架构的可扩展性和可维护性优势的基础上,通过使用诸如Struts、Hibernate和Spring这样的开源框架,极大地简化了开发流程,降低了部署成本。这种架构模式更注重于灵活性和效率,使得...
这种方式使得服务可以独立地开发、部署和扩展,提高了系统的可伸缩性、可维护性和敏捷性。 在微服务架构中,每个服务都围绕特定业务功能构建,服务之间保持松耦合,降低了系统间的复杂性。这样的设计使得团队能够更...
分层结构也便于维护和测试,提高了系统的可伸缩性和可扩展性。 总之,一份完整的微服务架构方案不仅要考虑服务的设计和部署,还要在性能优化上作出深入的思考。通过架构师的精心设计和不断实践,最终实现系统的高...
综上所述,《轻量级Java EE企业应用实战2》是一本非常实用的技术书籍,它不仅系统地介绍了轻量级框架的使用方法,还深入探讨了微服务架构、持续集成与持续部署等前沿技术,对于希望提升自己在Java EE领域技能的...
- **可伸缩性与弹性**:设计时考虑系统在不同负载下的表现,确保其能够适应未来的需求变化。 ### 二、架构模式与框架 #### 2.1 常见架构模式 - **MVC(Model-View-Controller)**:分离业务逻辑、用户界面和数据...
3. **轻量级**:Thrift的API设计简洁,易于理解和使用,同时它不依赖特定的框架或库,降低了系统的复杂性。 4. **可扩展**:服务接口可以通过IDL进行扩展,而无需修改已有代码,这有助于保持系统的稳定性和可维护性...
分布式配置中心允许各个服务节点从中心获取和更新配置,降低了配置变更时的服务中断风险,并提高了系统的可伸缩性。 3. **综合资源**:此压缩包中的“AgileConfig-master”可能是一个完整的项目源码库,包含了开发...
再从技术架构的发展趋势来看,当今企业面临的挑战是如何构建更加敏捷、快速、可伸缩的技术基础设施,以应对不断变化的市场需求和业务发展。《架构师》杂志提到了“下一代架构”的概念,这通常包含了云计算、容器化、...
这种架构模式能够提高系统的可伸缩性、可维护性和敏捷性。 【微服务核心概念】 1. **服务拆分**:微服务的核心思想是将大型单体应用拆分为多个小而自治的服务,每个服务负责业务的一个特定领域,降低了复杂性。 2...
这有助于提高系统的可伸缩性、可维护性和容错性。 2. **服务间通信**:在微服务架构中,服务之间的通信通常采用RESTful API。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,...
这种方式提高了系统的可伸缩性、灵活性和可部署性。 2. **服务拆分**:书中详细介绍了如何根据业务能力来拆分服务,如按照业务域、数据或功能来划分,以及如何避免服务过小或过大导致的问题。 3. **服务发现**:在...
这种架构模式有助于提高系统的可伸缩性、可维护性和敏捷性。 微服务架构的核心理念在于解耦,它鼓励开发团队将大型单体应用拆分成一系列小而自治的服务,每个服务专注于完成特定业务功能。这样做的好处包括: 1. *...
2. **增强可伸缩性**:云原生应用能够自动扩展资源以应对不断变化的工作负载,从而提高效率并降低成本。 3. **提升可靠性**:通过采用容错机制和服务网格等技术,确保高可用性,减少停机时间。 4. **简化运维工作**...
6. 微服务的优缺点:分析微服务架构带来的优势,比如更快的市场响应时间、更好的系统可伸缩性,以及可能面临的挑战,如服务间调用增加导致的复杂性增加、事务一致性处理难度加大等。 7. 智慧共享平台的构建:讨论...
此外,Serverless 架构通常只适用于轻量级任务,且监控和调试较为复杂,这些都需要开发者在选择 Serverless 架构时充分考虑。 开源的 Serverless 框架给开发者提供了更多的选择和灵活性。Knative 是一个开源的 ...
SQL Server是微软公司开发的一种关系型数据库管理系统,它提供了数据存储、安全和检索功能,具有高度的可伸缩性和可靠性。SQLite作为一个轻量级的数据库,通常用于移动设备或小型项目中,不需要专门的服务器进程。 ...