±à¼ÍƼö: |
±¾±¾½éÉÜÁËÇ廪´óѧÄÜÔ´»¥ÁªÍø´´ÐÂÑо¿Ôº½«
Apache Pulsar Â䵨ÄÜÔ´»¥ÁªÍø·½ÏòµÄʵ¼ù¡£
±¾ÎÄÀ´×ÔÓÚsegmentfault £¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
ÍŶӼ°ÒµÎñ¼ò½é
ÄÜÔ´»¥ÁªÍøÊǵçÁ¦ÓëÄÜÔ´¹¤Òµ·¢Õ¹µÄ·½Ïò¡£Ëæ×ÅÐÅÏ¢¡¢Í¨Ðźͻ¥ÁªÍø¼¼ÊõµÄ·ÉËÙ·¢Õ¹£¬¿É»ñÈ¡µÄÊý¾ÝÁ¿ÕýÒÔ±¬Õ¨Ê½·½Ê½Ñ¸ÃÍÔö³¤£¬´«Í³µÄÊý¾Ý´¦Àí·½·¨ÒÑÄÑÒÔÓ¦¶ÔÕâЩº£Á¿ÇÒÔö³¤¼«¿ìµÄÐÅÏ¢×ʲú£¬´óÊý¾ÝÀíÂÛÕýÊÇÔÚÕâÑùµÄ״̬ÏÂÓ¦Ô˶øÉú¡£´óÊý¾Ý´¦Àí¼¼ÊõÄܰïÖúÎÒÃÇ͸¹ýº£Á¿Êý¾Ý¿ìËÙ·Ö±æÆäÔËÐÐ״̬¼°·¢Õ¹Ç÷ÊÆ£¬ÔÚ·×·±µÄÊÀ½çÖжÀ¾ß¶´²ìÁ¦¡£
Ç廪´óѧÄÜÔ´»¥ÁªÍø´´ÐÂÑо¿ÔºÄÜÔ´´óÊý¾ÝÓ뿪·ÅÉú̬Ñо¿ÖÐÐĻ㼯Á˹úÄÚÍâÄÜÔ´¼°µçÁ¦´óÊý¾ÝÁìÓòµÄ¶àλר¼Ò£¬ÖÂÁ¦ÓÚÍÆ¶¯´óÊý¾Ý»ù´¡ÀíÂÛºÍʵ¼ùÓ¦ÓõÄÈ«Ãæ´´Ð¡£ÄÜÔ´´óÊý¾ÝÓ뿪·ÅÉú̬Ñо¿ÖÐÐĽ«´óÊý¾Ý¼¼ÊõÓ¦ÓÃÓÚÄÜÔ´»¥ÁªÍø¡¢ÖÇÄܵçÍøºÍÖÇ»ÛÓÃÄܵȹ¤³Ì³¡¾°£¬½áºÏ¸ßÐÔÄÜÓÅ»¯¡¢²¢ÐмÆËãºÍÈ˹¤ÖÇÄܵÈÏȽø¼¼Êõ£¬Ñз¢ÊÊÓÃÓÚÄÜÔ´µçÁ¦ÐÐÒµÌØµãµÄ´óÊý¾Ý
/ ÔÆ¼ÆËãÆ½Ì¨£¬ºÍ»ùÓÚÊý¾ÝÇý¶¯µÄÄÜÔ´µçÁ¦ÏµÍ³µÄ¸ß¼¶Ó¦Ó㬴ӶøÊµÏÖ´óÊý¾Ý²úÒµµÄ·¢Õ¹£¬ÐγÉÒÔÊý¾ÝΪºËÐĵÄÐÂÐͲúÒµÁ´£¬Íƶ¯ÎÒ¹úÄÜÔ´²úÒµµÄתÐÍÓëÉý¼¶¡£
ÌôÕ½
ÎÒÃÇÍŶӵÄÒµÎñÖ÷ÒªÊÇÓëµçÁ¦Ïà¹ØµÄÎïÁªÍø³¡¾°£¬Ö¼ÔÚʵÏÖÓû§¶Ô´«¸ÐÆ÷µÈÉ豸Êý¾ÝµÄÐèÇ󿪷¢¡£ÎÒÃÇÍŶӹæÄ£½ÏС£¬µ«ÈÎÎñ·±ÔÓ£¬Ï£ÍûÄܸü¿ì¸üÎȵØÊµÏÖ¿Í»§µÄÐèÇó¡£
ÔÚÕûÀíÒµÎñÐèÇóºó£¬ÎÒÃÇÌá³öÒÔºó¶Ë¼´·þÎñ£¨BaaS£©ÎªÖ÷¡¢»ùÓÚÏûÏ¢µÄ·þÎñ·½°¸¡£ÔÚÎïÁªÍøÁìÓòÄÚ£¬»ùÓÚÕâÑùµÄ½â¾ö·½°¸£¬ÎÒÃÇ¿ÉÒÔ¹²Óøü¶à»ù´¡ÉèÊ©·þÎñ£¬Í¬Ê±¿ÉÒÔ¿ìËÙÓ¦¶Ô²»Í¬ÐèÇó½øÐÐÒµÎñ¿ª·¢¡£¿¼Âǵ½ÌØÊâµÄÒµÎñÐèÇó£¬ÎÒÃÇµÄÆ½Ì¨ÐèÒª¾ß±¸ÒÔÏÂÌØÐÔ£º
¶à×â»§£ºÆ½Ì¨ÒªÊµÏÖÒµÎñ·ÖÀ룬·þÎñ²»·ÖÀ룬ÓÖ¿ÉÒÔÈ·±£°²È«ÉóºË£¬Âú×ã¿Í»§¶ÔÊý¾Ý°²È«ÐÔµÄÃô¸ÐÐèÇ󣬾ͱØÐëÖ§³Ö¶à×â»§¡£´ËÍ⣬»¹¿ÉÒÔÔÚͨѶ¡¢Êý¾Ý¡¢ÒµÎñÕâÈý·½ÃæÌṩһЩ»ù´¡·þÎñ£¬±ÈÈç×Ô¶¨ÒåÊý¾Ý½á¹¹µÄ
Schema Registry£¬×Ô¶¨ÒåÊý¾Ý¹éÊôµÄ ACL ȨÏÞ¹ÜÀí£¨Ôö¼Óɾ¸ÄµÄ API ½Ó¿Ú£©£¬ÒÔ¼°ÊµÏÖ¸÷ÖÖÒµÎñµÄ×Ô¶¨Ò庯ÊýÒýÇæ¡£
Schema Registry£ºÂú×㲻ͬÐèÇóºÍÓ¦Óó¡¾°ÏÂÉ豸¶à±äµÄÊý¾Ý½á¹¹£¬ÌṩÔÊÐí×Ô¶¨ÒåÊý¾Ý½á¹¹µÄ
Schema Registry¡£
ͨÓà API£ºÌṩ°üº¬Ôö¼Óɾ¸ÄµÄ HTTP RESTful APIs ºÍÏàÓ¦µÄ WebSocket
½Ó¿Ú£¬È·±£ÔÚͨѶÉÏÌṩ»ù´¡·þÎñ£¬²¢»ùÓÚÕâÒ»»ù´¡·þÎñ½øÐÐÀ©Õ¹¡£
ACL ȨÏÞ¹ÜÀí£º¿É×Ô¶¨ÒåÊý¾ÝµÄ ACL ȨÏÞ¿ØÖÆ·þÎñ£¬±£ÕÏÊý¾Ý°²È«¡£
ʱÐòÊý¾Ý¿â£º¶àÊýÇé¿öÏ£¬ÎïÁªÍø³¡¾°¶¼ÔÚºÍʱÐòÊý¾Ý´ò½»µÀ£¬ËùÒÔÎÒÃÇÑ¡ÔñÁË»ùÓÚ PostgreSQL µÄ¿ªÔ´
TimeScaleDB£¬²¢ÇÒÒÀÍÐ TimeScaleDB ×öÁËһϵÁÐʱÐòÊý¾ÝµÄ¾ÛºÏ²éѯ½Ó¿Ú¡£
Óû§×Ô¶¨Òå functions£ºÊµÏÖ¸÷ÖÖÒµÎñµÄ×Ô¶¨Ò庯ÊýÒýÇæ¡£
֮ǰÎÒÃÇʹÓûùÓÚ RabbitMQ ºÍ Celery µÄ·½°¸À´ÊµÏÖÓû§×Ô¶¨Òå functions µÄº¯ÊýÒýÇæ¡£ÕâÒ»·½°¸µÄ×î³õʹÓÃЧ¹ûÁ¼ºÃ£¬µ«Ëæ×ÅÒµÎñµÄÔö³¤£¬ÎÊÌâÔ½À´Ô½¶à¡£ÎÒÃǵÄСÍŶӲ»µÃ²»»¨¸ü¶àʱ¼äÀ´½â¾öÎÊÌâºÍÓÅ»¯ÕûÌå·½°¸¡£µ±
Celery ×÷ΪÈÎÎñ¶ÓÁÐʱ£¬ÕâЩÎÊÌâÓÈΪÑÏÖØ¡£
ÎÒÃÇ»¨·Ñ´óÁ¿µÄʱ¼äºÍ¾«Á¦´¦ÀíµÄÎÊÌâÖ÷ÒªÓÐÁ½¸ö£º
ÐèÒª×ÐϸÅäÖà Celery µÄ worker ºÍ task£¬±ÜÃâÖ´ÐÐʱ¼ä³¤µÄÈÎÎñ×èÈûÆäËûÈÎÎñ£»
Worker ¸üÐÂʱÐèÒªÖжϷþÎñ£¬¸üÐÂʱ¼äÒ²Ïà¶Ô½Ï³¤¡£
´ËÍ⣬ÔÚÌØÊⳡ¾°ÖУ¬Èç¹ûµ¥¸öÏûÏ¢±È½Ï´óÇÒÏûÏ¢´¦Àíʱ¼ä³¤Ê±£¬Celery ºÍ RabbitMQ µÄÄڴ渺µ£¶¼±È½Ï´ó¡£
Ëæ×ſͻ§ÊýÁ¿ºÍÏîÄ¿ÊýÁ¿µÄÔö¼Ó£¬ÕâЩÎÊÌâ±äµÃÈÕÒæÍ»³ö£¬ÎÒÃǾö¶¨ÕÒÒ»¸öвúÆ·Ìæ´úÔÓз½°¸¡£
ΪʲôѡÔñ Apache Pulsar£¿
ÈçÉÏËùÊö£¬ÎÒÃÇÏ£ÍûÏûÏ¢Öмä¼þ¿ÉÒÔÌṩÒÔÏÂÌØÐÔ£º
¶à×â»§
¿É¿¿ÐԺ͸߿ÉÓÃ
Ö§³Ö¶àÐÒ飬ÓÈÆä¿ÉÒԺܷ½±ãµØ×ª»»ÐÒ飺ÔÚÎïÁªÍøÁìÓò£¬ÎÒÃÇÐèÒªÓ¦¶Ô²»Í¬µÄͨÐÅÐÒ飬°Ñ²»Í¬Í¨ÐÅÐÒéµÄÊý¾ÝÈ«²¿µ¼Èëµ½ÏûÏ¢Öмä¼þÖС£
Ö§³Ö¶àÓïÑÔ£ºÎÒÃÇÍŶÓÖ÷ҪʹÓà Go ÓïÑÔ£¬µ«ÎÒÃÇ»áºÍºÜ¶àʹÓÃÆäËûÓïÑÔµÄÍŶӺÏ×÷£¬ËùÒÔÏûÏ¢Öмä¼þ×îºÃ¿ÉÒÔÖ§³ÖÆäËûÓïÑÔ¡£
×÷ΪÇáÁ¿¼¶¼ÆËãÒýÇæÊµÏÖ¼òµ¥µÄÏûÏ¢´¦Àí¡£
ÔÚµ÷Ñв»Í¬µÄÏûÏ¢Öмä¼þʱ£¬ÎÒÃǺܿ췢ÏÖÁË Pulsar¡£Í¨¹ý Pulsar µÄÎĵµºÍ·¢²¼ÈÕÖ¾£¬ÎÒÃÇÁ˽⵽
Pulsar ÓкܶàÓÅÐãµÄÌØÐÔ£¬ËùÒÔ¾ö¶¨¶Ô Pulsar ½øÐвâÊÔºÍÆÀ¹À¡£¾¹ýÉîÈëÑо¿¡¢Ñ§Ï°£¬ÎÒÃÇ·¢ÏÖ
Pulsar µÄÔÆÔÉú¼Ü¹¹¡¢Schema¡¢Functions µÈ·Ç³£ÊʺÏÎÒÃǵÄÒµÎñÐèÇó¡£
ÔÆÔÉú£ºPulsar Ö§³ÖÔÆÔÉú£¬ÓµÓÐÖî¶àÓÅÐãµÄÌØÐÔ£¬Èç¼ÆËãÓë´æ´¢·ÖÀ룬¿ÉÒԺܺõØÀûÓÃÔÆµÄµ¯ÐÔÉìËõÄÜÁ¦£¬±£Ö¤À©ÈݺÍÈÝ´í¡£´ËÍ⣬Pulsar
¶Ô Kubernetes µÄÁ¼ºÃÖ§³ÖÒ²ÔÚÒ»¶¨³Ì¶ÈÉϰïÖúÎÒÃǽ«Ò»²¿·ÖÒµÎñÇáËÉÇ¨ÒÆµ½ÁË Kubernetes
ÉÏ¡£
Pulsar Functions£ºPulsar Functions ÊÇÒ»¸öÓÅÐãµÄÇáÁ¿¼¶¼ÆËãÒýÇæ£¬¿ÉÒԺܺõØÈ¡´ú
Celery ·½°¸¡£ÎÒÃÇ¿ÉÒÔ¸ü¶àµØ³¢ÊÔʹÓà Pulsar Functions À´´¦ÀíÒµÎñ£¬ÕâÊÇÎÒÃÇÑ¡Ôñ
Pulsar µÄÖ÷ÒªÔÒò¡£
·Ö²ã´æ´¢£ºÕâÒ»ÌØÐÔÄܹ»½ÚÔ¼´æ´¢³É±¾¡£ÎÒÃǵÄʹÓó¡¾°»á²úÉúºÜ¶à´«¸ÐÆ÷µÄÔʼÊý¾Ý£¬ÐèÒª×÷ΪÀäÊý¾Ý´æ´¢¡£½èÖú·Ö²ã´æ´¢£¬ÎÒÃÇ¿ÉÒÔÖ±½Ó½«ÕâЩÀäÊý¾Ý´æ´¢ÔÚ¼Û¸ñ¸üµÍµÄ´æ´¢·þÎñÖУ¬Ò²ÎÞÐ迪·¢¶îÍâµÄ·þÎñÀ´´æ´¢Êý¾Ý¡£
MQTT/MoP£ºPulsar ¶Ô¸÷ÖÖÐÒéµÄ¼æÈÝչʾÁËÉçÇøµÄ¿ª·ÅÐÔ¡£ÔÚ MoP ·¢²¼Ç°£¬ÎÒÃÇ¿ª·¢ÁË
MQTT ÐÒéµÄת·¢¹¤¾ß£¬°Ñ MQTT ÐÒéÉϵÄÊý¾Ýת·¢µ½ Pulsar ÖС£
Pulsar Schema£ºÎÒÃÇµÄÆ½Ì¨Í¨¹ý JSON À´ÃèÊöÊý¾Ý schema£¬Í¨¹ý¶Ô½Ó Pulsar
Schema ºÍÎÒÃÇ×Ô¼ºµÄ Schema Registry£¬¿ÉÒÔʵÏÖÏûÏ¢ÐòÁл¯µÄ¹¤×÷¡£Ä¿Ç° Pulsar
ÔÚ Go Schema µÄ¹¦ÄÜÈÔ´¦ÓÚÆð²½½×¶Î£¬ÎÒÃÇÒ²»á³¢ÊÔ×öһЩʵ¼ùÓë¹±Ïס£
¶àÓïÑÔ£ºÎÒÃǺܿ´ÖضàÓïÑÔÖ§³Ö£¬ÓÈÆäÊÇ Go ÓïÑÔ¡£Pulsar ÓÐ Go ÓïÑÔÏàÓ¦µÄ¿Í»§¶Ë¡¢Go function
runtime¡¢»ùÓÚ Go ÓïÑÔʵÏÖµÄ Pulsarctl µÈ¡£ÎÒÃÇҲϣÍû Pulsar δÀ´¿ÉÒÔÖ§³Ö¸ü¶àÓïÑÔ£¬ÒòΪÎÒÃDz»ÄÜÔ¤¼û¿Í»§µÄÐèÇó£¬Ö§³Ö¶àÓïÑÔÄܹ»°ïÖúÎÒÃǸüÇáËɵؽâ¾öÎÊÌâ¡£
Pulsar Manager & Dashboard£ºPulsar ÔÚ¸÷¸ö²ã¼¶¶¼Æô¶¯Á˽ӿÚÀ´»ñÈ¡
Metrics¡£Pulsar µÄÆäËû¹¤¾ß£¨Èç Prometheus¡¢Grafana¡¢Pulsar Manager£©Äܹ»°ïÖúÎÒÃǼõÇáÔËά¡¢ÓÅ»¯¡¢ÅÅ´íµÄͶÈë¡£
¿ªÔ´£ºPulsar ÉçÇø¿ª·Å¡¢»îÔ¾¡¢ÓѺá£ÓÐ StreamNative ÕâÑùµÄ¹«Ë¾×öÖ§³Å£¬Óû§¿ÉÒÔ·ÅÐĵØÑ¡Ôñ
Pulsar£¬°ÑÒµÎñÇ¨ÒÆµ½ Pulsar ÉÏ¡£
ÉîÈëÁ˽â Pulsar ºó£¬ÎÒÃǾö¶¨¶Ô Pulsar ½øÐвâÊÔ£¬²¢³¢ÊÔÇ¨ÒÆÒ»¸öÉú²ú»·¾³µÄÓ¦Óá£
Ç¨ÒÆÊÔÑ飺¥ÓîÖÇ»ÛÓõç
Â¥ÓîÖÇ»ÛÓõçÊÇÎÒÃÇÔÚÓõç·ÖÎöºÍÔ¤²âÁìÓò×öµÄÒ»´Î³¢ÊÔ£¬ÎÒÃÇÏ£Íû²É¼¯µ½°ì¹«ÊÒÖÐÿһ¸öÓõçµãµÄÓõçÐÅÏ¢¡£ÔÚÑо¿ÔºÐ°칫¥װÐÞ³õÆÚ£¬ÎÒÃǽøÐÐÁ˼¼ÊõÆÀ¹À£¬½«Ê¹ÓÃ
zigbee ÐÒéµÄÖÇÄܲå×ùÁÐÈëÁË×°ÐÞ·½°¸¡£Õû¸ö²¿Êð°üº¬Èý²ãÂ¥£¬Ô¼ 700 ¸öÖÇÄܲå×ùºÍ 50 ¸ö
zigbee Íø¹Ø¡£²å×ù²¿ÊðÔڰ칫³¡ËùµÄËùÓÐÓõçµã£¬°üº¬¹¤Î»²å×ù¡¢Ç½±Ú²å×ùÒÔ¼°ÖÐÑë¿Õµ÷·ç»ú²å×ù¡£ËùÓÐÊý¾Ýͨ¹ýÖÇÄܲå×ù³§ÉÌÌṩµÄ¾ÖÓòÍø¹ã²¥·½°¸£¬½«¹ã²¥Êý¾Ýת·¢µ½
Pulsar ÖÐʵÏÖÊý¾ÝµãµÄ²É¼¯ºÍÔ¤´¦Àí¡£Ä¿Ç°ÓõçÁ¿Êý¾Ýÿ 10 ÃëÖÓÉÏËÍÒ»´Î£¬ÆäËûÓëÓû§Ïà¹ØµÄ²Ù×÷£¨°üÀ¨¿ª¹Ø²å×ù¡¢²å°ÎÓõçÉ豸£©ÔòʵʱÉÏËÍ¡£Õë¶ÔÕâЩÊý¾Ý£¬ÎÒÃÇ×öÁËһЩÊý¾Ý¿ÉÊÓ»¯µÄ³¢ÊÔ£¬²¢°ÑÊý¾Ý¹±Ï׸øÑо¿ÔºµÄÆäËûÍŶӽøÐзÖÎö£¬»òÓÃ×÷¿ª·¢Ëã·¨µÄ²Î¿¼ÐÅÏ¢ºÍÔʼÊý¾Ý¡£
»ùÓÚÖÇÄܲå×ùÉ豸³§ÉÌÌṩµÄ MQTT ·½°¸£¬ÎÒÃdz¢ÊÔ½« MQTT ÐÒéµÄÊý¾Ý¶¼×ª·¢µ½ Pulsar
ÖС£ÔÚת·¢¹ý³ÌÖУ¬ÎÒÃÇÓöµ½µÄÖ÷ÒªÎÊÌâÊÇ MQTT topic ºÍ Pulsar topic µÄÓ³Éä¡£ÎÒÃǵĽâ¾ö·½°¸ÊÇÖ±½Ó°ÑËùÓеÄ
MQTT Êý¾Ýת·¢µ½Í¬Ò»¸ö Pulsar topic ÖУ¬Í¬Ê±°Ñ²¿·ÖÔªÊý¾Ý°ü×°ÔÚת·¢µÄÏûÏ¢ÖУ¬ÔÙͨ¹ý
Pulsar Functions ×öÏûϢ·ÓÉ£¬°ÑÏûϢת·¢µ½²»Í¬µÄÒµÎñ topic ÖС£ÏÂͼչʾÁËÈçºÎ½«´«¸ÐÆ÷²úÉúµÄÊý¾Ý´«ËÍÖÁƽ̨²¢×îÖÕÈë¿â¡£

ÔÚ´Ó MQTT ת·¢Êý¾Ýµ½ Pulsar µÄ¹ý³ÌÖУ¬ÎÒÃÇĬÈϰÑËùÓÐÉ豸µÄÊý¾Ý¶¼×ª·¢µ½Í¬Ò»¸ö topic
ÖУ¬²¢Í¨¹ý verificate function ½øÐÐÑéÖ¤£¨°üÀ¨½âÃܺÍÄÚÈݼì²é£©£¬±£ÕÏÊý¾ÝµÄºÏ·¨ÐÔ¡£ºÏ·¨µÄÊý¾Ý»á±»×ª·¢µ½Ò»¸öÖмä
topic µÈ´ýÏûϢ·ÓÉ·Ö·¢£¬ÏûÏ¢·Ö·¢µÄ function »á´ÓÊý¾ÝÖнâÎö³öÉ豸ÀàÐͺÍÏûÏ¢ÀàÐÍ£¬ÔÙת·¢µ½¶ÔÓ¦ÒµÎñ
topic ÖУ¬µÈ´ý±»¶ÔÓ¦ÒµÎñ topic °ó¶¨µÄ ETL function ×ö´¦Àí¡£ÔÚʹÓà ETL
function ´¦Àíʱ£¬ÎÒÃÇÒ²»á¸ù¾ÝÉ豸ÀàÐÍÌáÈ¡²»Í¬µÄÊý¾Ý£¬¶ÔÍø¹ØÉ豸ÌáÈ¡Íø¹Ø×´Ì¬¡¢É豸ÐÅÏ¢£¬¶Ô²å×ùÌáÈ¡ÓõçÊý¾ÝºÍ²å×ùµÄ״̬ÐÅÏ¢¡£ÕâЩÐÅÏ¢»áÆ¥ÅäÎÒÃÇÆ½Ì¨µÄ
Schema Registry Êý¾Ý½á¹¹£¬ÎÒÃÇÔÙ°ÑÉú³ÉµÄÊý¾Ý×ö Schema Mapping£¨Í¨¹ý
Functions ʵÏÖ£©£¬×îºóͳһת·¢ÕâЩ½á¹¹»¯µÄÊý¾Ýµ½ sink topic ÖУ¬ÓÉ sink
function дÈëµ½Êý¾Ý¿â¡£
Â¥ÓîÖÇ»ÛÓõçµÄÇ¨ÒÆ²âÊÔÓÐÁ¦ÑéÖ¤ÁË Pulsar ·ûºÏÎÒÃǵÄÐèÇó¡£ÔÚÇ¨ÒÆ¹ý³ÌÖУ¬ÎÒÃDzéÔÄÁË Pulsar
Îĵµ£¬´ÓÉçÇø»ñµÃÁË´óÁ¦Ö§³ÖºÍ°ïÖú£¬Ç¨Òƹý³Ì¸ßЧ¡¢Ë³Àû¡£½èÖú Functions µÄ¿ª·ÅÓë±ãÀû£¬ÎÒÃǺܿìÍê³ÉÁËÁ÷³ÌͼÖÐËùÓÐ
function µÄ¿ª·¢ºÍµ÷ÊÔ£¬ÉÏÏßÁËÕû¸öÒµÎñϵͳ¡£
ÔÚÒµÎñÇ¨ÒÆ¹ý³ÌÖУ¬Pulsar ÔËÐÐ״̬Á¼ºÃ£¬ÍŶÓÒ»ÖÂÈÏΪ Pulsar ¿ÉÒÔ°ïÖúÎÒÃǼõÇῪ·¢ºÍÔËά¸ºµ££¬ËùÒÔÎÒÃÇÑ¡Ôñ
Pulsar ×÷ΪÑо¿ÖÐÐÄΨһµÄÏûÏ¢Öмä¼þ·þÎñ£¬ÎÒÃǵÄСÍŶÓÒ²¿ªÊ¼¸úËæ Pulsar Ò»Æð½øÐÐһϵÁÐÔÆÔÉúÇ¨ÒÆºÍÓÅ»¯¹¤×÷¡£
¾ö¶¨·½°¸ºó£¬ÎÒÃǽ« Apache Pulsar ½øÒ»²½Ó¦Óõ½µçÍøÖÇÄÜ´«¸ÐºÍÖÇÄܱäµçËùµÄ³¡¾°£¬ÕâЩ³¡¾°¶¼ÓëÎïÁªÍø¡¢ÄÜÔ´ºÍµçÁ¦Ïà¹Ø¡£ÏÂÎĽ«Ïêϸ½éÉÜÎÒÃÇÈçºÎʹÓÃ
Pulsar ºÍ Pulsar Functions£¬ÒÔ¼°ÈçºÎͨ¹ý Pulsar Functions
¼ò»¯´«¸ÐÆ÷Êý¾ÝÁ÷µÄÏà¹Ø´¦Àí¡£
Pulsar x µçÍøÖÇÄÜ´«¸Ð
µçÍøÖÇÄÜ´«¸Ð³¡¾°Ö÷Òª»ùÓÚÇ廪´óѧÄÜÔ´»¥ÁªÍø´´ÐÂÑо¿ÔºÓëµçÍø¹«Ë¾ºÏ×÷µÄÊäµçÏß·ÖÇÄܶà²ÎÊý´«¸ÐÆ÷¼¯³ÉÑо¿ÏîÄ¿¡£¸ÃÏîÄ¿µÄ´«¸ÐÆ÷À´×Ô²»Í¬µÄ³§¼Ò£¬·Ö²¼ÔÚÊäµçÏß·µÄ¸÷¸öλÖ㬴«¸ÐÆ÷ÀàÐÍÒò´ËÒ²²»¾¡Ïàͬ£¬°üÀ¨¸ËËþ¡¢¸ËËþÉÏ¡¢ÊäµçÏß·²àµÈÊ®¶àÖÖ¡£Õû¸öϵͳĿǰ½ÓÈë×ܳ¤¶ÈÔ¼Áù°Ù¹«À°üº¬Áù°Ù¶à¸ö¸ËËþµÄÊäµçÏß·´«¸ÐÆ÷¡£ÕâÒ»³¡¾°Ö÷Òª¸ºÔð¶Ô¸÷ÖÖ´«¸ÐÆ÷µÄÊý¾Ý½øÐÐÔÚÏß¼à²âºÍ¸æ¾¯£¬Í¬Ê±£¬ÎÒÃÇÒ²µ¥¶ÀÕë¶Ôµçѹ´«¸ÐÆ÷×öÁËÔÝ̬µçѹ·ÖÎö¡£
Õâ¸öÓ¦Óó¡¾°ÓÐÁ½¸öÄѵ㣺һÊÇÀ´×Ô²»Í¬³§É̵Ĵ«¸ÐÆ÷ûÓÐͳһµÄͨÐÅÐÒ飬ÓеÄʹÓõçÁ¦Ïà¹ØµÄ IEC104
¹æÔ¼£¬ÓеÄʹÓà protobuf »òÆäËû³§ÉÌ×Ô¶¨ÒåÐÒ飻¶þÊÇÏîÄ¿Êý¾ÝÁ¿±È½Ï´ó£¬ÓÐЩ´«¸ÐÆ÷¿ÉÄܻᵥ´Î²úÉú
20 MB ÉõÖÁ¸ü´óµÄÏûÏ¢£¬ÓÐЩ´«¸ÐÆ÷ÔòÿÃëÉÏ´«Ò»´ÎÊý¾Ý¡£
½èÖú Pulsar£¬ÎÒÃÇÑ¡ÔñÔÚ producer ¶Ë²»×öÈκÎÊý¾Ý´¦Àí£¬Ö±½Ó½«Êý¾Ýת·¢µ½ Pulsar
ÖУ¬ÔÙͨ¹ý Pulsar Functions ×ö½øÒ»²½µÄÊý¾ÝÔ¤´¦ÀíºÍÆäËûÒµÎñ²Ù×÷¡£ÒÔµçѹ´«¸ÐÆ÷ΪÀý£¬µçѹ´«¸ÐÆ÷»á²úÉúÈýÀàÊý¾Ý£¬·Ö±ðÊÇÐÄÌøÊý¾Ý¡¢ÎÈ̬²¨ÐÎÊý¾ÝºÍÔÝ̬²¨ÐÎÊý¾Ý¡£ÆäÖÐÐÄÌøÊý¾ÝºÍÎÈ̬²¨ÐÎÊý¾Ýͨ¹ý
protobuf ÐÒé´«Ê䣬ÔÝ̬Êý¾ÝÔòͨ¹ý zip ѹËõÎļþµÄÐÎʽ´«Êä¡£½ÓÊÕµ½ protobuf µÄÊý¾Ýºó£¬½èÖú
Pulsar Functions ½øÐÐһϵÁеÄÊý¾Ý´¦Àí£¬°üÀ¨Í¨¹ý½âÃÜ function Íê³ÉÊý¾Ý½âÃܺÍ
protobuf µÄ·´ÐòÁл¯£¬ÔÙ¶ÔÊý¾Ý½øÐзÓÉ£¬Í¨¹ý¶ÔÓ¦µÄ ETL function ×öÊý¾Ý´¦ÀíºÍ½âÎö£¬×îºóͨ¹ý
Schema Mapping ½«Êý¾ÝÈë¿â¡£ÎÒÃǰÑÕâ¸öÁ÷³ÌµÄÿһ²½¶¼·â×°³É¶ÀÁ¢µÄ Pulsar function£¬ÕâÑù×ö³öÓÚÈýµã¿¼ÂÇ£º
ÎÒÃÇÏ£Íû¼à¿Øµ½Õû¸öÊý¾ÝÁ÷¹ý³ÌÖÐÿһ¸ö»·½ÚµÄ״̬£¬²É¼¯Ã¿¸ö¹ý³ÌµÄ metrics£¬²¢ÇÒ¹Û²âÒ»Ð©ÖØµãÖ¸±ê£¬±ÈÈçÊÇ·ñ´æÔÚ
backlog »ýѹ¡£×´Ì¬¼à²â·½±ãÎÒÃǵ÷Õûÿ¸ö»·½Ú function µÄ²¢ÐÐÊýÁ¿¡£
ʹÕû¸öÊý¾ÝÁ÷¸ü¼ÓÁé»î£¬±ãÓÚÎÒÃÇÔÚ²»Í¬Á÷³ÌÖÐÐÂÔöºÍɾ³ý function¡£
¸ü´ó³Ì¶ÈµØ±£ÕÏÁËÎÒÃÇ¿ÉÒÔÖØÓÃ×Ô¼ºÎ¬»¤µÄ function¡£
Õâ¸ö·½°¸Ò²Óöµ½ÁËһЩСÀ§ÄÑ£¬±ÈÈçÓÉÓÚ function ±È½Ï¶à£¬ÎÒÃÇÐèÒª»¨¸ü¶àʱ¼ä²¿Êð¡¢Î¬»¤Ã¿Ò»¸ö¹ý³ÌµÄÖмä
topic¡£Ä¿Ç°£¬ÎÒÃǵĽâ¾ö·½°¸ÊÇÖ±½Óд¶ÔÓ¦µÄ´úÂëÒ»´ÎÐÔÍê³É²¿ÊðºÍά»¤¡£ËäÈ»ÐèҪͶÈë¸ü¶à¾«Á¦£¬µ«ÎÒÃÇÈÏΪÕâÖÖ
function µÄ¿ª·¢ºÍ²¿ÊðģʽÊÇÖµµÃµÄ¡£ÉÏÎÄÌáµ½µçѹ´«¸ÐÆ÷³ýÁË»á²úÉú protobuf µÄÁ½ÖÖÊý¾ÝÍ⣬»¹»á²úÉúÒ»ÖÖÔÝ̬Êý¾Ý¡£ÔÝ̬Êý¾ÝÒ»°ãÔÚµçÍø·¢Éú¹ÊÕÏ»òÒ쳣ʱ²úÉú£¬ÀàËÆµçÁ¦ÏµÍ³µÄ¿ìÕÕ£¬¼Ç¼¹ÊÕÏ·¢Éúǰµ½·¢Éúʱ£¬ÔÙµ½·¢ÉúºóµÄ²¨ÐÎ״̬¡£ÔÚµçÁ¦ÏµÍ³ÖУ¬ÔÝ̬Êý¾Ýͨ³£Óбê×¼µÄ´æ´¢·½°¸ºÍÌØ¶¨µÄ½âÎö½Ó¿Ú¡£Ïà¶ÔÓÚ´«¸ÐÆ÷²úÉúµÄÆäËûÊý¾ÝÀ´Ëµ£¬ÕâÀàÊý¾ÝµÄÌØµãÊDZȽϴ󣬶¯éü¼¸Ê®Õס£ÎÒÃÇÓ¦¶ÔÔÝ̬Êý¾ÝµÄ·½°¸ÊÇÏȽâѹËõÕâЩÊý¾Ý£¬ÔÙ·ÖÎöÊý¾ÝÎļþ¡£ÕâÀïÎÒÃǽèÖúÁË
Pulsar Functions ¶àÓïÑÔÖ§³ÖµÄÌØÐÔ£¬Á÷³ÌͼÖеÄÀ¶É«²¿·ÖʹÓà Go function
ʵÏÖ£¬»ÆÉ«²¿·ÖʹÓà Python ʵÏÖ£¬Python ÓÐÒ»¸ö½âÎöµçÍøÔÝ̬Êý¾ÝµÄ¿â£¬¿ÉÒÔµ÷Ó㬾ÍÃâÈ¥ÁËÎÒÃÇ×Ô¼º»¨Ê±¼äʵÏÖÒ»Ì×
Go °æ±¾½âÎö½Ó¿ÚµÄ¹¤×÷¡£

Pulsar x ÖÇÄܱäµçËù
ÖÇÄܱäµçËùÊÇÎÒÃÇÔÚ±äµçϵͳÖбäµç»·½ÚµÄһЩ³¢ÊÔ£¬Õâ¸öÏîÄ¿»ùÓÚÎÒÃǺÏ×÷µÄÖÇÄÜÊä±äµçÉ豸³§ÉÌ£¬Ï£Íû»ùÓÚ¿ª¹Ø¹ñµÈ±äµçËùÉ豸ʵÏÖ±äµçËùµÄÊý¾Ý½ÓÈë¡£Õâ¸öÏîÄ¿µÄÖ÷ҪĿ±êÊÇʵÏÖʵʱ¼à²â¡¢¹ÊÕÏÕï¶ÏºÍÒì³£¼à²âÕâÈý´ó¹¦ÄÜ¡£

ÔÚÖÇÄܱäµçËùµÄ³¡¾°ÖУ¬Í¨³£ÓÉÉ豸Éú²ú³§ÉÌÌṩÉ豸µÄ¹ÊÕÏÕï¶ÏËã·¨»òÕï¶ÏÓ¦Óã¬ÎÒÃÇÐèÒª½«²»Í¬ÐÔÖʵÄËã·¨»òÓ¦Óü¯³Éµ½ÏÖÓз½°¸ÖС£¿Í»§ÌṩµÄËã·¨¿ÉÄÜÖ±½ÓÔÚ
Pulsar Functions Öе÷Óã¬Ò²¿ÉÄÜÊÇÒѾ±àÒëºÃµÄ¿ÉÖ´ÐÐÎļþ£¬ÉõÖÁ¿ÉÄÜÊÇÆäËûÓïÑÔµÄʵÏÖ£¬±ÈÈç
R ÓïÑÔ¡£Õë¶ÔÕâһϵÁÐÎÊÌ⣬ÎÒÃÇÏȰѿͻ§ÌṩµÄʵÏÖ·â×°ÔÚ Docker ÈÝÆ÷ÖУ¬ÔÚÈÝÆ÷ÖÐʵÏÖÒ»¸ö×îСµÄ
Pulsar function runtime£¬ÔÙͨ¹ý Docker proxy function
ºÍ Docker endpoint ¹µÍ¨£¬ÔÚ´¥·¢ function ʱ´´½¨¶ÔÓ¦Ëã·¨µÄÈÝÆ÷ʵÏÖ¼ÆË㣬×îºó½«½á¹û»Ø´«µ½
Pulsar ¶ÔÓ¦µÄ topic ÖС£
ÁíÍ⣬ÔÚÕâÒ»³¡¾°ÖÐÎÒÃÇÒ²Óöµ½ÁËһЩӦÓòãÃæµÄÐèÇ󣬱ÈÈçÏûÏ¢ÍÆËÍ¡£ÎÒÃǽèÖú Pulsar Functions
ʵÏÖÁËһЩҵÎñ¹¦ÄÜ£¬ÔÚ Functions ÖпÉÒԺܷ½±ãµØµ÷Óò»Í¬·þÎñÉ̵Ľӿڣ¬ÊµÏÖÏûÏ¢ÍÆËÍ£¬±ÈÈç¶ÌÐÅ¡¢Óʼþ¡¢Ó¦ÓóÌÐòµÄÍÆËÍ·þÎñ¡£´ËÍ⣬ͨ¹ý
Pulsar Functions£¬ÎÒÃǵÃÒÔ°ÑÏûÏ¢ÍÆË͵ÄÒµÎñÐèÇó´Óƽ̨Öнâź³öÀ´£¬°Ñ·þÎñ×ö³É function£¬±ãÓÚºóÐøÔÚÓÐͬÑùÐèÇóµÄ³¡¾°ÖÐÖ±½ÓʹÓá£
ʹÓà Pulsar Óöµ½µÄÎÊÌâ¼°½â¾ö·½°¸
ÎÒÃÇÔÚʹÓà Pulsar µÄ¹ý³ÌÖÐÓöµ½ÁËһЩÎÊÌ⣬ÏÂÎÄ»á·ÖÏí½â¾öÕâЩÎÊÌâµÄһЩ¾Ñ飬ϣÍû¿ÉÒÔ¶Ô×¼±¸»òÕßÒѾÔÚʹÓÃ
Pulsar µÄͬѧÌṩһЩ°ïÖú¡£
µÚÒ»¸öÊǹØÓÚ Pulsar ĬÈÏÏûÏ¢´óСµÄÎÊÌâ¡£ÔÚĬÈÏÅäÖÃÏ£¬Pulsar Ö§³ÖµÄ×î´óÏûÏ¢ÊÇ 5
MB£¬ÔÚÉÏÎÄÌáµ½µÄÖǻ۵çÍø°¸ÀýÖУ¬µ¥ÌõÏûÏ¢ÓÐʱ»á³¬¹ý 20 MB¡£ÎÒÃǸù¾ÝÎĵµÐÞ¸ÄÁË broker
ÅäÖÃÎļþÖÐµÄ MaxMessageSize ²ÎÊý£¬µ«Ð޸ĵÄÅäÖò¢Ã»ÓÐÉúЧ£¬³¬¹ý 5 MB µÄÏûÏ¢ÒÀÈ»²»ÄÜÕý³£´«µÝµ½
Pulsar ÖС£ÓÚÊÇÎÒÃÇÔÚ Pulsar ÉçÇøÑ°Çó°ïÖú£¬µÃµ½ÁËÉçÇøµÄѸËÙ»ØÓ¦¡£Õâ¸öÎÊÌâµÄÖ÷ÒªÔÒòÊÇ
Pulsar 2.4.0 ÖÐ MaxMessageSize ûÓÐͬ²½µ½ BookKeeper£¬ËùÒÔ¼´Ê¹
broker ¿ÉÒÔ½ÓÊÕ¸ü´óµÄÏûÏ¢£¬broker ÈÔÈ»²»ÄܰÑÏûÏ¢´«µÝµ½¸ºÔð´æ´¢µÄ BookKeeper
ÖС£Òò´Ë³ýÁËÐÞ¸Ä MaxMessageSize ÖµÍ⣬»¹ÐèÒªÐÞ¸Ä broker ºÍ BookKeeper
ÖÐ nettyFrameSizeBytes Ïà¹ØÅäÖã¬ÕâЩÅäÖñ£³ÖÒ»Ö£¬Pulsar ¾Í¿ÉÒÔ´¦Àí¸ü´óµÄµ¥ÌõÏûÏ¢¡£
µÚ¶þ¸öÎÊÌâÊÇÎÒÃÇÔÚʹÓà Pulsar Functions ´¦ÀíÊý¾Ýʱ£¬topic ÖпÉÄÜ»á³öÏÖ backlog
»ýѹԽÀ´Ô½¶àµÄÇé¿ö¡£Backlog °üÀ¨Ã»Óз¢Ë͸ø Functions£¨consumer£©µÄÊý¾Ý£¬Ò²°üÀ¨ÒÑ·¢Ë͵«Î´±»
Functions£¨consumer£©ack µÄÊý¾Ý¡£¸ù¾ÝÎÒÃǵľÑ飬ÔÚ Functions ³¡¾°Ï£¬ÏûÏ¢»ýѹ¿ÉÄÜÊÇÒòΪ
function ´¦Àíµ¥ÌõÏûÏ¢µÄËÙ¶ÈÂý£¬´¦Àíʱ¼ä³¤£¬»òÕß function ±ÀÀ£¡£Èç¹ûÊÇÒòΪ function
´¦ÀíÏûÏ¢Âý£¬Ò»ÖÖ½â¾ö·½°¸ÊÇÔö¼Ó function µÄ²¢ÐÐÊýÁ¿£¬ÔÙ¾ßÌå·ÖÎöÖ´ÐÐËÙ¶ÈÂýµÄÔÒò²¢½øÐÐÓÅ»¯£»ÁíÒ»ÖÖ·½°¸ÊǰѸ´ÔÓµÄ
function ·Ö³É¶à¸ö¼òµ¥µÄ function£¬Ò²¾ÍÊÇÔÚÖÇÄܵçÍø³¡¾°ÖÐÌáµ½µÄ°ÑÒ»¸ö¸´Ô function
²ð³É¶à¸ö function£¬Í¨¹ý function µÄÁ´Ê½Ä£Ê½°ÑÕû¸öÁ÷³ÌÁ´½ÓÆðÀ´¡£ÕâÑùÎÒÃÇ¿ÉÒԺܷ½±ãµØ¹Û²âÿһ¸ö
function µÄ״̬£¬Ò²¿ÉÒÔÕë¶Ôij¸ö function ×ö½øÒ»²½µÄÓÅ»¯¡£Èç¹ûÓÉÓÚ function
±ÀÀ£Ôì³É backlog »ýѹ£¬ÔòÐèÒª±£ÕÏ function µÄÎȶ¨ÐÔ£¬²¢½èÖú function µÄ
log topic ½øÐе÷ÊÔ¡£
µÚÈý¸öÎÊÌâÊǵ± producer ÊýÁ¿Ôö¼Óʱ£¬ºÜÄÑͳһ¹ÜÀíºÍ¹Û²âÿ¸ö producer µÄ״̬£¬¼´
producer Óë broker Ö®¼äµÄͨÐÅ״̬ºÍ producer ÓëÊý¾ÝÔ´Ö®¼äµÄͨÐÅ״̬¡£Õë¶ÔÕâ¸öÎÊÌ⣬ÎÒÃÇĿǰµÄ½â¾ö·½°¸ÊǸø
producer Ôö¼ÓÐÄÌøÏûÏ¢µ½¶ÔÓ¦µÄÐÄÌø topic ×öÕûÌå¼à¿Ø£¬Í¬Ê±£¬¼à¿Ø producer ºÍ
broker µÄ״̬Á¬½Ó¡£Í¨¹ýÕâЩ¸Ä¶¯£¬ÎÒÃÇ¿ÉÒԽϺõؾۺϹ۲â producer µÄÔËÐÐ״̬¡£ÎÒÃÇ×¢Òâµ½
GitHub ÉÏÒ²ÔÚÌÖÂÛÀàËÆÎÊÌ⣬ÆÚ´ýºÍÉçÇøÒ»ÆðÌá³ö¸üÓÅÐãµÄ½â¾ö·½°¸¡£
ÆÚ´ý
ÎÒÃÇÆÚ´ý Pulsar ÄܸÄÉÆ»òÔö¼ÓÒÔϹ¦ÄÜ¡£
Pulsar Functions Mesh ʵÏÖÁË¶Ô function ½øÐÐÀàËÆÓÚ Kubernetes
µÄ·þÎñ±àÅÅ£¬ÎÒÃÇÆÚ´ý¸Ã¹¦Äܵķ¢²¼¡£ÉÏÎÄÌáµ½ÎÒÃÇʵÏÖÁËÁ´Ê½ function µÄ½â¾ö·½°¸£¬µ«ÕâÖÖ·½Ê½ÔÚά»¤ÉÏÓöµ½ºÜ´óÌôÕ½£¬Ï£Íû
Functions mesh ¿ÉÒÔ½â¾öÕâ¸öÎÊÌâ¡£
Ï£Íû Pulsar functions Ö§³Ö¸ü¶àÓïÑ﵀ runtime¡£ÎÒÃÇÓà function ×ö
Docker proxy function£¬Õâ¸ö·½°¸ËäÈ»¿ÉÐУ¬µ«Ï£ÍûÓиüÓÅÐãµÄ½â¾ö·½°¸¡£
IoT ³¡¾°ºÜ×¢ÖØ±ßÔµ¼ÆË㣬ÎÒÃÇÏ£Íû Pulsar ¿ÉÒÔÔÚ±ßÔµ¼ÆËãÉÏ×öһЩ³¢ÊÔ¡£ÎÒÃǹØ×¢µ½ Pulsar
ÔÊÐí½« Functions µÄÏûÏ¢ÍÆË͵½ÁíÒ»¸ö Pulsar ¼¯ÈºÖУ¬ÔÊÐí Functions ÓëÍⲿ
Pulsar ¼¯ÈºÍ¨Ñ¶¡£Í¨¹ýÕâÒ»¸Ä¶¯£¬¿ÉÒÔ³¢ÊÔ½« Pulsar ²¿Êðµ½±ßÔµÉ豸ÉÏ£¬²¢Ê¹Óà Pulsar
Functions ÔÚÕâЩÉ豸ÉϽøÐмÆËã¡£²¿Êð Pulsar ¶ÔÄÚ´æµÄÐèÇó½Ï´ó£¬ÔÚһЩÔËËãÄÜÁ¦½ÏÈõµÄ±ßÔµÉ豸Éϲ¿Êð
Pulsar ±È½ÏÀ§ÄÑ£¬Ï£Íû Pulsar ÄÜÔÚºóÐø°æ±¾ÖÐÓÅ»¯»òÌṩÆäËû·½°¸½â¾öÕâÒ»À§ÈÅ¡£
½áÓï
×÷Ϊһ¸ö¿ªÔ´ÏîÄ¿£¬Pulsar ÕýÔÚ¿ìËÙ·¢Õ¹£¬Îĵµ¸üÐÂѸËÙ£¬ÉçÇøÏìÓ¦¼°Ê±£¬ÉçÇø¹æÄ£²»¶Ï׳´ó¡£ÎÒÃÇÏ£ÍûÉîÈëÁ˽â
Pulsar£¬²ÎÓë Pulsar ¿ª·¢¹±Ï×£¬ºÍÉçÇø·ÖÏíÎÒÃǵÄʵ¼ù¾Ñ飬Óë Pulsar ÉçÇø¹²Í¬·¢Õ¹¡£
ÔÚʹÓà Pulsar µÄ¹ý³ÌÖУ¬ÎÒÃÇÓöµ½Ò»Ð©À§»ó£¬¸Ðл StreamNative ÍŶÓС»ï°éÃǵĴóÁ¦Ö§³Ö£¬°ïÖúÎÒÃÇ˳Àû½«
Pulsar Ó¦Óõ½ÉÏÊöÒµÎñ³¡¾°ÖС£Î´À´£¬ÎÒÃÇ»á»ý¼«³¢ÊÔ Pulsar µÄ¸÷ÖÖй¦ÄÜ£¬²¢½« Pulsar
Ó¦ÓÃÓÚ¸ü¶àµÄÄÜÔ´»¥ÁªÍø³¡¾°ÖС£ |