Hacker News

আমরা মাল্টি-থ্রেডেড রাস্টের সাথে একক-থ্রেডেড C++ ইন্টারফেস করেছি

আমরা মাল্টি-থ্রেডেড রাস্টের সাথে একক-থ্রেডেড C++ ইন্টারফেস করেছি ইন্টারফেসডের এই বিস্তৃত বিশ্লেষণটি এর মূল উপাদান এবং বিস্তৃত প্রভাবগুলির বিশদ পরীক্ষা প্রদান করে। ফোকাসের মূল ক্ষেত্র আলোচনা কেন্দ্রে রয়েছে: মূল মেক...

1 min read Via antithesis.com

Mewayz Team

Editorial Team

Hacker News
এখানে সম্পূর্ণ SEO ব্লগ পোস্ট:

আমরা বহু-থ্রেডেড মরিচা সহ একক-থ্রেডেড C++ ইন্টারফেস করেছি

মাল্টি-থ্রেডেড রাস্টের সাথে একক-থ্রেডেড C++ কোড ইন্টারফেস করা কেবল সম্ভব নয় — এটি সম্পূর্ণ পুনর্লিখন ছাড়াই উত্তরাধিকার সিস্টেমগুলিকে আধুনিকীকরণ করার সবচেয়ে ব্যবহারিক উপায়গুলির মধ্যে একটি। Mewayz-এ, 138,000 ব্যবহারকারীদের পরিষেবা দেওয়ার জন্য আমাদের 207-মডিউল ব্যবসায়িক OS স্কেল করার সময় আমরা এই সঠিক চ্যালেঞ্জটি মোকাবেলা করেছি, এবং ফলাফলগুলি মৌলিকভাবে পরিবর্তন করেছে যে আমরা সিস্টেমের আন্তঃব্যবহারযোগ্যতা সম্পর্কে কীভাবে চিন্তা করি।

কেন আপনি একাধিক-থ্রেডেড রাস্টের সাথে একক-থ্রেডেড C++ ইন্টারফেস করবেন?

বেশিরভাগ উৎপাদন ব্যবস্থাই বছরের পর বছর যুদ্ধ-পরীক্ষিত C++ কোড বহন করে। মরিচা-এ সমস্ত কিছু পুনঃলিখন কাগজে আকর্ষণীয় মনে হয়, তবে এটি বিশাল ঝুঁকি এবং কয়েক মাসের প্রকৌশল সময়ের পরিচয় দেয়। বাস্তবসম্মত পন্থা হল ক্রমবর্ধমান অবলম্বন — রাস্টের মালিকানা মডেলে একযোগে-ভারী কাজের চাপ অফলোড করার সময় বিদ্যমান C++ যুক্তিকে মোড়ানো।

আমাদের ক্ষেত্রে, মূল ব্যবসায়িক লজিক মডিউলগুলি বহু বছর ধরে একক-থ্রেডেড C++ এ নির্ভরযোগ্যভাবে চলছিল। তারা ক্রমিক কার্য প্রক্রিয়াকরণ, নথি তৈরি এবং আর্থিক গণনা পরিচালনা করে। কিন্তু আমাদের ব্যবহারকারী বেস 100K অতিক্রম করার সাথে সাথে আমাদের সমান্তরাল ডেটা প্রসেসিং, সমসাময়িক API হ্যান্ডলিং এবং নিরাপদ শেয়ার্ড-স্টেট ম্যানেজমেন্ট প্রয়োজন। রাস্টের পাঠান এবং সিঙ্ক বৈশিষ্ট্যগুলি আমাদের কম্পাইল-টাইম কনকারেন্সি গ্যারান্টি দেয় যে C++ ব্যাপক ম্যানুয়াল অডিটিং ছাড়া অফার করতে পারে না।

মূল প্রেরণা হল ঝুঁকি হ্রাস। আপনি যা কাজ করে তা রাখেন, এবং আপনি কোন স্কেল যোগ করেন — এমন একটি মাইগ্রেশনের উপর আপনার সম্পূর্ণ কোডবেস জুয়া না খেলে যা শেষ নাও হতে পারে।

এফএফআই সীমানা আসলে কীভাবে কাজ করে?

C++ এবং রাস্টের মধ্যে বিদেশী ফাংশন ইন্টারফেস (FFI) C- সামঞ্জস্যপূর্ণ ফাংশন স্বাক্ষরের মাধ্যমে কাজ করে। মরিচা-এর <কোড>বহিরাগত "C" ব্লকগুলি এমন ফাংশনগুলিকে প্রকাশ করে যা C++ সরাসরি কল করতে পারে এবং এর বিপরীতে। যখন রাস্টের মাল্টি-থ্রেডেড রানটাইমকে সিঙ্গেল-থ্রেডেড C++ কোড নিরাপদে ব্যবহার করতে হয় তখন গুরুত্বপূর্ণ চ্যালেঞ্জটি দেখা দেয়।

আমরা একটি ডেডিকেটেড আর্কিটেকচার ব্যবহার করে এটি সমাধান করেছি:

  • থ্রেড-সীমিত C++ নির্বাহক: সমস্ত C++ কল একটি বার্তা-পাসিং চ্যানেল ব্যবহার করে একটি একক ডেডিকেটেড থ্রেডের মাধ্যমে ফানেল করা হয়, নিশ্চিত করে যে একক-থ্রেডেড ইনভেরিয়েন্ট কখনও লঙ্ঘন না হয়।
  • রস্ট অ্যাসিঙ্ক ব্রিজ লেয়ার: টোকিও টাস্কগুলি সি++ এক্সিকিউটরের কাছে কাজ জমা দেয় এবং ওয়ানশট চ্যানেলের মাধ্যমে ফলাফল অপেক্ষা করে, রাস্ট সাইড সম্পূর্ণ অ্যাসিঙ্ক্রোনাস রেখে।
  • অস্বচ্ছ পয়েন্টার ম্যানেজমেন্ট: C++ অবজেক্টগুলিকে রাস্ট স্ট্রাকটে মোড়ানো হয় যা নির্ধারক পরিচ্ছন্নতার জন্য ড্রপ প্রয়োগ করে, ভাষার সীমানা জুড়ে মেমরি লিক প্রতিরোধ করে।
  • সীমানায় ক্রমিককরণ: জটিল ডেটা স্ট্রাকচারগুলি FFI স্তরে ফ্ল্যাটবাফারগুলিতে ক্রমিক করা হয়, ভঙ্গুর কাঠামো বিন্যাস মেলানো এড়িয়ে যায় এবং প্রতিটি পক্ষের স্বাধীন বিবর্তন সক্ষম করে৷
  • আতঙ্ক বিচ্ছিন্নতা: রাস্টের catch_unwind প্রতিটি FFI এন্ট্রি পয়েন্টকে মুড়ে দেয় যাতে একটি আতঙ্ক কখনই ভাষার সীমানা অতিক্রম না করে, যা হবে অনির্ধারিত আচরণ।

এই প্যাটার্নটি আমাদের প্রমাণিত C++ যুক্তির নির্ভরযোগ্যতার সাথে মাল্টি-থ্রেডেড রাস্টের থ্রুপুট দিয়েছে — মূল ব্যবসায়িক নিয়মের একটি লাইন পুনরায় লেখা ছাড়াই।

সবচেয়ে বড় ক্ষতি এড়াতে হবে কি?

সবচেয়ে বিপজ্জনক ভুল হল অনুমান করা হচ্ছে C++ কোড থ্রেড-নিরাপদ যখন এটি না থাকে। গ্লোবাল স্টেট, স্ট্যাটিক ভেরিয়েবল এবং নন-এন্ট্রান্ট লাইব্রেরি কল ডাটা রেসের কারণ হবে যা রাস্টের কম্পাইলার FFI সীমানা জুড়ে সনাক্ত করতে পারে না। মরিচা-এর নিরাপত্তার গ্যারান্টিগুলি অনিরাপদ ব্লকে থামে — ভিতরে সবকিছু আপনার দায়িত্ব।

মূল অন্তর্দৃষ্টি: মরিচা তার নিজস্ব কোডের মধ্যে মেমরির নিরাপত্তার নিশ্চয়তা দেয়, কিন্তু যে মুহূর্তে আপনি C++ এ একটি FFI সীমানা অতিক্রম করেন, আপনি C++ এর প্রতিটি থ্রেড-নিরাপত্তা সমস্যা উত্তরাধিকার সূত্রে পাবেন। সেই সীমানার চারপাশের স্থাপত্যটি এর উভয় পাশের কোডের চেয়ে বেশি গুরুত্বপূর্ণ।

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

আরেকটি সাধারণ সমস্যা হল আজীবন ব্যবস্থাপনা। C++ অবজেক্ট রাস্টের ধার চেকারে অংশগ্রহণ করে না। C++ এখনও একটি পয়েন্টার ধারণ করার সময় যদি মরিচা একটি রেফারেন্স ড্রপ করে, তাহলে আপনি ব্যবহার-পর-মুক্ত বাগ পাবেন যা নির্ণয় করা নির্মমভাবে কঠিন। আমরা কঠোর মালিকানা শব্দার্থ প্রয়োগ করে এটির সমাধান করেছি: C++ বস্তুগুলি সর্বদা ঠিক একটি রাস্ট র্যাপারের মালিকানাধীন, এবং শেয়ার্ড অ্যাক্সেস আর্ক-ভিত্তিক রেফারেন্স গণনার মাধ্যমে যায়।

পারফরম্যান্স অনুসারে, অতিরিক্ত FFI কলগুলি প্রসঙ্গ স্যুইচিং এবং সিরিয়ালাইজেশন থেকে ওভারহেড তৈরি করে। আমরা ব্যাচ অপারেশনগুলি যেখানেই সম্ভব করি, ব্যক্তিগত ক্রস-ল্যাঙ্গুয়েজ কল করার পরিবর্তে C++ এক্সিকিউটরের কাছে কাজের আইটেমগুলির একটি সারি প্রেরণ করি৷

কিভাবে এই পদ্ধতিটি উৎপাদনে পারফর্ম করেছে?

আমাদের প্ল্যাটফর্ম জুড়ে হাইব্রিড আর্কিটেকচার স্থাপন করার পরে, আমরা কংক্রিট উন্নতি পরিমাপ করেছি। অনুরোধ থ্রুপুট মডিউলগুলির জন্য 3.4x বৃদ্ধি পেয়েছে যা পূর্বে অনুক্রমিক C++ প্রক্রিয়াকরণে বাধা ছিল। টেল লেটেন্সি (p99) 61% কমেছে কারণ রাস্টের অ্যাসিঙ্ক রানটাইম একই সাথে স্বাধীন অনুরোধগুলিকে প্রক্রিয়া করতে পারে যখন C++ এর ডেডিকেটেড থ্রেডে গণনা-ভারী কাজগুলি পরিচালনা করে।

আরও গুরুত্বপূর্ণভাবে, উৎপাদনের প্রথম ছয় মাসে আমাদের কাছে শূন্য সহযোগ-সম্পর্কিত বাগ ছিল। থ্রেড-কনফিনমেন্ট প্যাটার্ন এটিকে কাঠামোগতভাবে অসম্ভব করে তুলেছে সি++ কোড একাধিক থ্রেড থেকে কল করা, যখন রাস্টের টাইপ সিস্টেম সীমানার পাশে ডেটা রেস প্রতিরোধ করে। মিউটেক্সের সাথে C++ এ থ্রেডিং যুক্ত করার চেষ্টা করার আমাদের আগের পদ্ধতির তুলনায় এটি একটি উল্লেখযোগ্য উন্নতি ছিল, যা একটি একক ত্রৈমাসিকে তিনটি রেস-কন্ডিশনের ঘটনা তৈরি করেছিল।

ইঞ্জিনিয়ারিং দলও দ্রুত পুনরাবৃত্তি চক্রের রিপোর্ট করেছে। নতুন বৈশিষ্ট্যগুলি সম্পূর্ণ একযোগে সমর্থন সহ মরিচা-এ তৈরি করা যেতে পারে, যখন বিদ্যমান C++ মডিউলগুলি পরিবর্তন ছাড়াই চলতে থাকে। এই ক্রমবর্ধমান কৌশলটির অর্থ হল আমাদের কখনই উচ্চ-ঝুঁকিপূর্ণ "বিগ ব্যাং" মাইগ্রেশন ছিল না — শুধু স্থির, পরিমাপযোগ্য উন্নতি৷

প্রায়শই জিজ্ঞাসিত প্রশ্ন

মরিচা কি পরিবর্তন ছাড়াই একক-থ্রেডেড C++ লাইব্রেরি কল করতে পারে?

হ্যাঁ, তবে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে লাইব্রেরিতে সমস্ত কল একটি একক থ্রেড থেকে হচ্ছে৷ স্ট্যান্ডার্ড প্যাটার্ন হল একটি ডেডিকেটেড এক্সিকিউটর থ্রেড তৈরি করা যা একটি চ্যানেলের মাধ্যমে সমস্ত C++ কলকে সিরিয়ালাইজ করে। রাস্টের অ্যাসিঙ্ক কাজগুলি অনুরোধ জমা দেয় এবং মাল্টি-থ্রেডেড রানটাইম ব্লক না করে প্রতিক্রিয়ার জন্য অপেক্ষা করে। C++ কোডের নিজেই কোনো পরিবর্তনের প্রয়োজন নেই — নিরাপত্তার সীমাবদ্ধতা সম্পূর্ণরূপে জং এর দিকে প্রয়োগ করা হয়।

এফএফআই ওভারহেড কি অ্যাপ্লিকেশান কর্মক্ষমতা প্রভাবিত করার জন্য যথেষ্ট তাৎপর্যপূর্ণ?

স্বতন্ত্র এফএফআই কলের ন্যূনতম ওভারহেড থাকে — সাধারণত একটি সাধারণ ফাংশন কলের জন্য 10 ন্যানোসেকেন্ডের নিচে। যাইহোক, জটিল ডেটা স্ট্রাকচারের সিরিয়ালাইজেশন এবং সীমানায় থ্রেড সিঙ্ক্রোনাইজেশন যোগ হয় যদি আপনি হাজার হাজার সূক্ষ্ম কল করেন। ব্যাচিং অপারেশন এবং ফ্ল্যাটবাফারস বা ক্যাপ'ন প্রোটোর মতো জিরো-কপি সিরিয়ালাইজেশন ফরম্যাটগুলি ব্যবহার করা এমনকি স্কেলেও ওভারহেডকে নগণ্য রাখে৷

আমাদের কি আমাদের C++ কোডবেসকে ইন্টারফেস করার পরিবর্তে মরিচা-এ আবার লিখতে হবে?

বেশিরভাগ দলের জন্য, ক্রমবর্ধমান ইন্টারফেসিং হল নিরাপদ এবং দ্রুত পথ। একটি সম্পূর্ণ পুনঃলিখন শেষ না হওয়া পর্যন্ত ব্যবহারকারীর মুখোমুখি মূল্য ছাড়াই কয়েক মাসের প্রকৌশল ঝুঁকির পরিচয় দেয়। ইন্টারফেসিং আপনাকে অবিলম্বে উন্নতি পাঠাতে দেয়, উৎপাদনে মরিচা পদ্ধতির বৈধতা দেয় এবং যেখানে একযোগে সবচেয়ে বেশি প্রভাব ফেলে তার উপর ভিত্তি করে এক সময়ে মডিউল স্থানান্তর করতে দেয়। শুধুমাত্র সেই মডিউলগুলিকে পুনরায় লিখুন যেখানে FFI সীমানা বজায় রাখার খরচ পুনর্লিখনের খরচকে ছাড়িয়ে যায়৷


মেওয়েজে, আমরা পরিকাঠামো তৈরি করি যা মাপকাঠি — প্রযুক্তিগত এবং কার্যক্ষম উভয়ভাবেই। আমাদের 207-মডিউল ব্যবসায়িক OS $19/মাস থেকে শুরু করে 138,000 টিমকে আরও স্মার্ট ওয়ার্কফ্লো চালাতে সাহায্য করে। আপনি প্রকল্পগুলি পরিচালনা করছেন, স্বয়ংক্রিয় ক্রিয়াকলাপ পরিচালনা করছেন বা আপনার ব্যবসাকে স্কেল করছেন, Mewayz আপনার কাজের পদ্ধতির সাথে খাপ খায়। app.mewayz.com-এ আপনার বিনামূল্যের ট্রায়াল শুরু করুন এবং দেখুন একটি আধুনিক ব্যবসায়িক OS আপনার দলের জন্য কী করতে পারে।

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Related Guide

HR Management Guide →

Manage your team effectively: employee profiles, leave management, payroll, and performance reviews.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime