`
atomduan
  • 浏览: 6734 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

焦虑的程序员--动态增加一个服务实例

阅读更多
睡觉
/**
	 * 分发一个服务模版,从而启动一个服务实例, 单总数不能超过参考的上线。
	 * @return
	 */
	protected boolean createSingleServiceInstance() {
		//不能在这里做服务实例数量相关的策略控制,因为这个地方取不到比较准确的运行中的服务实例的数量值,取到的只是一个参考值。
		
		//等等~!!!此处必须控制一下~!!!!因为,当该组件可支配的运行资源枯竭的时候(服务实例数量到上限的时候):
		//取决于具体服务组件的资源扩容策略,此方法很有可能会被“高频调用”,而dispatcher的dispatch操作会诱导
		//产生“高消耗”的逻辑运行比如threadPool会产生新的线程等等,
		//同时serviceInstanceKeeper内部逻辑也会在组件高负荷下陷入高并发运行状态,因为最终的数量控制在serviceInstanceKeeper中还有一道以确保
		//组件不会多占用资源。这违背了serviceInstanceKeeper低并发的生命周期控制场景的设计预期。
		//以上两方面会在服务组件满负荷的情况下产生灾难性的性能开销,所以必须预先检查一下,可支配资源是否已经枯竭,以避免无用功
		//另外,在满负运行场景,所取到的“服务实例”数量理论上应该是稳定的。 所以很有参考意义的,
		//应当避免在极端情况下,情况向更复杂的方向灾变。
		//另外定要注意他可能所在的运行场景是会变化的,一定要把这些可能的场景都想想,再权衡利弊。
		//代码不再是“静态”的代码,多假设下在不同的可能运行场景,他的行为会影响些什么。有些场景是否真的被屏蔽掉了。
		//对了,另外一定要对系统中的大开销行为心中有数并尽量明确统一管理,进行保护----这点做的不够抽象啊~~!!!!。
		//以下校验是十分必要的。不能因为里面有校验这里就不要了,行为场景不一样。
		//threadPool的资源只能被“服务组件”分享,其他的不能随便往里面抛任务~!!!!!!
		
		//注意这个场景~!!对于“任务潮涌”这个根本防不住啊~!!怎么办,也是高频场景,看来只能加强serviceInstanceKeeper的耐受力和性能了。~!!!!
		//首先我要明确“任务潮涌”的最大威胁是什么,是内存溢出,还是性能枯竭,俄,最终肯定是内存溢出死掉。
		//所以对“潮涌”要迅速的加资源,又不能反应过于敏感,造成运行资源的浪费。
		
		if (this.getServiceInstanceCount() < this.getMaxServiceInstances()) {
			return dispatch(serivceTemplate);
		}
		return false;
	}
分享到:
评论

相关推荐

    黑马程序员-----javaBean的操作类学习笔记

    - **公共无参构造器**:JavaBean需要提供一个公共的无参数构造函数,以便于实例化。 - **封装属性**:JavaBean中的属性应通过getter和setter方法进行访问,以保证数据的安全性。 - **属性声明**:属性通常是私有...

    安卓开发-Vibrator手机震动服务 - 小小程序员 - 博客频道 - CSDN.zip

    在Android开发中,Vibrator服务是一个非常实用的功能,它允许应用程序控制设备的震动反馈。这篇博客文章,"安卓开发-Vibrator手机震动服务 - 小小程序员 - 博客频道 - CSDN"深入探讨了如何在Android应用中实现手机...

    黑马程序员-tomcat集群部署文档资料

    集群是一种计算机系统组织方式,它将多台独立的服务器通过高速网络连接起来,形成一个统一的、高可用的资源池。集群的主要目标是提高系统的可用性和可扩展性,通过负载均衡分散请求到多台服务器,避免单一节点故障...

    黑马程序员------代理类中invoke方法注意点

    要创建一个动态代理对象,首先需要一个实现了`InvocationHandler`接口的类实例,然后使用`Proxy.newProxyInstance()`方法。例如: ```java Class&lt;?&gt; interfaceClass = ...; // 目标接口 InvocationHandler ...

    黑马程序员 - Java基础教学 - 06 - 面向对象(2) - 关于静态static的那些事.doc

    Java中的静态(static)关键字是面向对象编程中的一个重要概念,它允许我们定义类级别的变量和方法,而不是局限于实例级别的。本篇文章将详细讲解静态static的关键点,并结合Java的基础教学进行阐述。 1. 静态...

    计算机软件-商业源码-实例96 动态改变DBGrid组件的颜色.zip

    DBGrid是许多编程语言如Delphi、VB.NET、C#等中的一个控件,它允许程序员以表格形式显示数据库中的数据。在商业软件开发中,灵活调整UI元素,如改变DBGrid的色彩,可以增加视觉吸引力,区分不同数据类型或状态,或者...

    计算机软件-商业源码-实例039-形象的动态三维饼图.zip

    在计算机软件领域,源码是程序的核心组成部分,它是由程序员用特定编程...通过学习和分析这个实例,开发者不仅可以掌握动态三维饼图的制作技巧,还能了解如何将数据可视化应用于实际业务场景,提升软件产品的用户体验。

    实例-15---猜数字

    【标题】:“实例-15---猜数字” 这个标题表明我们即将探讨的是一个与编程相关的实例,具体来说是一个猜数字的游戏。在计算机科学和编程领域,这类实例通常用于教学目的,帮助初学者理解如何实现特定的算法或者逻辑...

    实例9--一个简单的opengl游戏.rar

    这个"实例9--一个简单的OpenGL游戏.rar"压缩包很可能是包含了一个基础的OpenGL游戏开发教程或项目源代码。在这个实例中,我们将探讨一些核心的OpenGL概念和技术。 首先,OpenGL是一个跨语言、跨平台的应用程序编程...

    程序员简历模板-程序员

    总的来说,"程序员简历模板.doc"提供了一个基础框架,帮助求职者构建出结构清晰、内容充实的程序员简历。通过结合自身的经历和技能,你可以打造出一份具有吸引力的简历,增加找到理想工作的可能性。

    非程序员2001-24

    - **定位**:UMLChina是一个专注于软件开发领域的在线社区,致力于提供免费的学习资源,帮助读者理解和掌握软件开发的相关技术和理念。 - **内容特色**:该杂志不仅提供技术性的文章,还涉及行业新闻、方法论介绍...

    java源码包---java 源码 大量 实例

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    计算机软件-商业源码-实例八--动画屏保.zip

    在本资源"计算机软件-商业源码-实例八--动画屏保.zip"中,我们重点关注的是一个关于动画屏保的商业源码实例。这个压缩包包含了一个完整的动画屏保程序的源代码,对于学习和理解如何开发此类软件具有重要的价值。下面...

    C语言实例精华--voice

    2. **内存管理**:C语言允许程序员直接管理内存,通过`malloc`, `calloc`, `realloc`, `free`等函数实现动态内存分配和释放。理解内存管理有助于避免内存泄漏,提高程序效率。 3. **高级数据结构**:第7章可能涵盖...

    自定义控件小实例--多功能进度条

    本实例“自定义控件小实例--多功能进度条”提供了一个很好的学习平台,帮助我们了解如何在.NET环境中实现一个功能丰富的进度条控件。 首先,自定义控件的创建通常涉及以下步骤: 1. **继承基类**:在.NET中,我们...

    单片机C语言实例--157-数码管显示.zip

    单片机C语言实例——157-数码管显示是一个典型的微控制器编程示例,它主要涉及以下几个关键知识点: 1. **单片机基础**:单片机是一种集成在单一芯片上的微型计算机,通常用于控制电子设备。在这个实例中,我们可能...

    计算机软件-商业源码-实例5-6--打地鼠---2个部分.zip

    总结来说,这个“打地鼠”游戏的商业源码实例为我们提供了一个学习游戏编程的宝贵资源。通过分析和理解这些源码,我们可以学到如何利用编程语言构建动态交互的游戏,掌握游戏逻辑设计、用户界面创建、事件处理等技能...

    程序员代码面试指南2-代码

    总的来说,《程序员代码面试指南第二版2》结合配套源代码,为准备面试的程序员提供了一个全面的实战平台,帮助他们提升算法技能,增加面试成功的概率。通过学习和实践书中的内容,不仅可以提高面试表现,也能为日常...

    C#动态增加按钮

    以下是一个简单的示例,展示如何在Form的Click事件中动态添加一个按钮: ```csharp private void addButton_Click(object sender, EventArgs e) { // 创建一个新的按钮实例 Button newButton = new Button(); ...

    计算机软件-商业源码-实例027-显示动画光标.zip

    总的来说,这个"计算机软件-商业源码-实例027-显示动画光标.zip"提供了一个实践机会,让开发者深入了解如何在软件中集成动画光标功能,从而提升用户界面的互动性和专业感。通过学习和修改这段源码,开发者不仅可以...

Global site tag (gtag.js) - Google Analytics