分布式框架Orleans

 

官网:

http://dotnet.github.io/orleans/Documentation/clusters_and_clients/configuration_guide/client_configuration.html

 

1、grain单线程特点,grain1调用grain2中的函数,grain2中的函数又回来调用grain1中的另一个函数,这样形成了互相等待的死锁,尽量在变成过程中避免互相等待或者多个grain的级联等待的写法,最好保持grain的隔离性和独立性,在一个grain中完成逻辑处理,确实存在多grain调用时,尽量避免 await 过多的异步等待

2、我们现在使用的Orleans框架完全基于Actor的单线程颗粒异步编程模式,所有人要将以前的同步编程思维习惯改为异步编程思维习惯,从编程逻辑上改变程序的执行性能,异步编程思维大家去百度一下,总结归纳一些,逐步形成我们的开发规范!

3、计划任务中存在长延时的执行逻辑,首先从代码上或者数据库设计上优化相关程序,其次,我的理解是:因为激活一个grain就占用一个线程,长时间任务就长期占用线程,多个长时间的任务就可能将silo进程的线程占满,导致其他API请求grain时无线程可用,长时间无响应而导致500错误。因此有必要先优化计划任务的代码,再考虑将计划任务相关的逻辑代码移除API的silo集群!

posted @ 2020-05-27 09:12  wjl910  阅读(181)  评论(0)    收藏  举报