我进入基于docker的微服务架构,我有3个微服务,它们共同创建了一个产品,例如"CRM系统".
现在我希望我的客户能够随时升级他的产品.我有3个不同版本的微服务,客户应该看到哪一个?我想产品版本应该独立于微服务,因为复制一个微服务版本会让我比没有版本更麻烦.
那么有什么模式,想法来处理这种情况吗?
我唯一想到的是拥有另一个存储库,只要其中一个微服务生成生产就绪包,就会对其进行版本控制.但是,我现在有一个版本,我的产品所有者(PO)都不知道.
我开始阅读有关HHVM和Zephir的内容.起初我很兴奋,由于这些技术,性能上升了.但后来我开始问自己一个问题.如果它真的给你这样的性能,就像这种技术的所有者说的那样.
现在我要说,我觉得它看起来怎么样.如果我错了,请纠正我.
Php Script Live Process:运行脚本 - >编译 - >执行脚本
这里显而易见的问题是编译.我们需要在每次启动时编译脚本.
让我假装安装了Apache2,并运行名为"test.php"的php脚本:
APC:
APC打开,APC选项检查更改.它应该是这样的:
运行脚本 - >执行脚本
因为它已经编译到我们的内存并准备使用.
HHVM:
Hip Hop虚拟机,其行为与APC类似.这里的不同之处在于,虚拟机,对于带有APC的标准PHP,它是Zend Engine.所以它是这样的:
运行脚本 - >执行脚本
因为它已经编译(在内存中?)并准备使用.
Zephir:
我将我的脚本编译为C扩展.所以我猜它不需要编译?(我不确定这一点).所以我的php脚本里面的函数现在都是本机的.因此,如果我编写另一个名为"test2.php"的脚本,它将运行我在"test.php"中的本机函数(是的,它应该具有.zep格式,但现在无关紧要).现在使用APC我避免编译过程.
运行脚本 - >执行脚本
现在我很困惑.就你所知,它现在都是一样的.我没有看到使用Zephir和HHVM比标准APC有任何优势.所以我想听听,如果我是对的还是完全错的?
<script type="text/javascript">
function BigComputer(answer) {
this.the_answer = answer;
this.ask_question = function () {
alert(this.the_answer);
}
}
function addhandler() {
var deep_thought = new BigComputer(42),
the_button = document.getElementById('thebutton');
the_button.onclick = deep_thought.ask_question;
}
window.onload = addhandler;
</script>
Run Code Online (Sandbox Code Playgroud)
为什么这个脚本返回undefined而不是42?这就是我如何理解:
1)在网页加载时我们运行'addhandler'方法.
2)在此方法中,我们为deep_thought变量创建BipComputer实例.我们在答案中设置了42(BipComputer类中的公共变量)
3)然后我们设置按钮的参考(在html文件内)
4)点击按钮激活,这里有魔术:
在我看来应该打印出来编号42,因为我们刚刚在第2步中为此设置了,但是变量是"Undefined"吗?
另一个问题是,在没有()(没有参数传递)和()的情况下运行方法有什么区别.[像addhandler方法].
也许这个问题很简单,但我过去常常用java和php编程,现在javascript导向编程的思维方式对我来说很奇怪.函数看起来像类,类看起来像函数,没有真正的构造函数和东西.
但没关系,让我们回到问题:)
我真的很感激任何帮助.
@编辑
感谢@lbstr我找到了有用的链接,对于那些问我同样问题的人. http://web.archive.org/web/20080209105120/http://blog.morrisjohns.com/javascript_closures_for_dummies
我的触发器问题如下.谢谢你的帮助.
CREATE TRIGGER upper_case ON osoba
AFTER INSERT AS
BEGIN
DECLARE @imie VARCHAR(25)
DECLARE @new_imie VARCHAR(25)
DECLARE my_cursor CURSOR FAST_FORWARD FOR SELECT imie FROM INSERTED
OPEN my_cursor
FETCH NEXT FROM my_cursor INTO @imie
WHILE @@FETCH_STATUS = 0
BEGIN
@new_imie = UPPER(SUBSTRING(@imie, 1, 1)) + SUBSTRING(@imie, 2,LEN(@imie))
END
UPDATE osoba
SET imie = @new_imie WHERE imie = @imie
END
Run Code Online (Sandbox Code Playgroud)
错误消息:
消息102,级别15,状态1,过程upper_case,行13
'@ new_imie'附近的语法不正确.
消息102,级别15,状态1,过程upper_case,行17'END
'附近的语法不正确.
apache ×1
architecture ×1
compilation ×1
docker ×1
hhvm ×1
javascript ×1
methods ×1
oop ×1
phalcon ×1
php ×1
soa ×1
sql ×1
sql-server ×1
t-sql ×1
triggers ×1